Desenvolvedor Java, C# .Net

Anderson Damasio - Seja bem vindo!

Método IsNullOrEmpty - Qual sua utilidade?

clock April 30, 2009 20:37 by author Anderson

Essa é uma das funcionalidade imbutidas .NET, interessante pela razão de não termos a nescessidade de utilizar duas consultas para efetuar a mesma funcionalidade, como por exemplo:

ao invés de:

if ((variavel != "") && (variavel != null)){
...
}

Você faz:
if (!String.IsNullOrEmpty(s)){
...
}


Indica se o objeto String especificado é uma referência nula (Nothing no Visual Basic) ou uma seqüência vazia (Empty string).


Qualquer dúvida mais detalhes aqui:
http://msdn.microsoft.com/pt-br/library/system.string.isnullorempty.aspx



Herança de configurações no Web.Config

clock April 30, 2009 17:51 by author Anderson

O nosso dia a dia é sempre cheio de novidades e isso que deixa os nossos projetos cada vez mais divertidos. Hoje eu tive que fazer alguns ajustes em uma aplicação que está rodando no root do servidor web e possui outras aplicações rodando em baixo dessa mesma pasta.

A grande questão envolvida é que as configurações que inserimos no Web.Config da aplicação principal são propagadas para a aplicação que está em baixo da mesma estrutura de diretório conforme o modelo:

APP00 (Root) (Web.config)
+-----App01 (Web.config)
+-----App02 (Web.config)

Então de uma forma natural você acaba injetando dependências nas outras aplicações que está em baixo dessa mesma estrutura de diretório. Para resolver isso você precisa agir no Web.Config da aplicação principal e adicionar o atributo location com o parâmetro inheritInChildApplications="false" para impedir que configurações sejam propagadas para as outras aplicações. Essa necessidade se torna muito visível principalmente quando você adiciona referencias para módulos http em <system.Web>

<location path="." inheritInChildApplications="false">
    <system.web>
   </system.web>  
</location>


- How to disable web.config Inheritance for Child Applications in Subfolders in ASP.NET
- Bloqueando herança do web.config

 

Fonte:http://www.ramonduraes.net/post/Heranca-de-configuracoes-no-WebConfig.aspx
[],
Ramon Durães
MVP, Especialista em Visual Studio Team System



Exemplo de projeto Silverlight no Visual Studio 2008

clock April 29, 2009 03:24 by author Anderson

 

Download completo do exemplo

1- Para construirmos nosso exemplo vamos precisar ter instalado em nosso computador:- Microsoft Visual Studio 2008
- Microsoft Silverlight Tools
- E claro o plug-in Silvelight 1.1 Alpha

2- Abra o Visual Studio 2008 beta 2 vá no menu
File -> New -> Project -> Visual Basic -> Silverlight -> SilverLight Project e dê o nome testsilverlight para o projeto.

tutorial4_1.jpg
Figura: Criando um projeto Silverlight no Visual Studio 2008

3- Quando um novo projeto Silverlight é criado no Visual Studio 2008 ele cria automaticamente os seguintes arquivos:

3.a- Arquivo HTML: O Visual Studio dá o nome TestPage.html, esse arquivo serve como ponto de partida para o browser carregar o projeto Silvelight e também pode conter outros conteúdo junto com o Silverlight. Veja que ele faz referencia aos arquivos TestPage.html.js e Silverlight.js.

3.b- Arquivo TestPage.html.js: Esse arquivo javascript contém o método createSilverlight que é um modelo para chamar os métodos createObject ou createObjectEx definidos no Silverlight.js

3.c- Arquivo Silverlight.js: Esse arquivo javascript define os métodos createObject e createObjectEx que servem para inicializar o controle Silverlight além de fornecer recursos de instalação do Silvelight para o usuário caso ele não possua o Silverlight instalado.

3.d- Arquivo Page.xaml: Esse arquivo XAML é definido como o parametro “source” nos métodos createSilverlight ou createSilverlightEx e contém o contéudo da interface do projeto Silverlight.

3.e- Arquivo Page.xaml.vb: Esse arquivo VB ou C# serve para gerenciar em tempo de execução os eventos do projeto Silverlight. O código utiliza a mesma classe que foi definida no atributo x:Class do Page.xaml.

tutorial4_2.jpg
Figura: Arquivos do projeto Silverlight

4- Abra o arquivo Page.xaml e insira o seguinte código antes de </Canvas>:

<Canvas x:Name=”Button1″ Canvas.Top=”50″ Width=”100″ Height=”30″ Background=”Gray”>
    <TextBlock>
        <Run Text=”Enter mouse”></Run>
    </TextBlock>
</Canvas>

Esse código XAML nada mais é do que um Texto criado com o TextBlock e agrupado sozinho através do Canvas com o nome Button1.

tutorial4_3.jpg
Figura: Código XAML

5- Abra o Page.xaml.vb e insira o código após o End Sub:

    Private Sub Button1_MouseEnter(ByVal sender As Object, _
    ByVal e As System.Windows.Input.MouseEventArgs) Handles Button1.MouseEnter
        Dim buttonBrush As New SolidColorBrush
        buttonBrush.Color = Colors.Red
        Me.Button1.Background = buttonBrush
        Dim tb As TextBlock = Me.Button1.Children(0)
        tb.Text = “Mouse…”
    End Sub

    Private Sub Button1_MouseLeave(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Button1.MouseLeave
        Dim buttonBrush As New SolidColorBrush
        buttonBrush.Color = Colors.Gray
        Me.Button1.Background = buttonBrush
        Dim tb As TextBlock = Me.Button1.Children(0)
        tb.Text = “Enter mouse”
    End Sub
   
Esse código representa as ações para os eventos MouseEnter e MouseLeave do Button1 declarado no XAML. Quando o cursor do mouse entra na área do texto o texto é alterado para “Mouse…” e a cor do fundo é alterada. E quando o cursor do mouse sai da área do texto o texto volta para “Enter Mouse” e a cor de fundo volta ao que era.

tutorial4_4.jpg
Figura: Código VB

6- Teste o projeto com menu Debug -> Start Without Debugging (Ctrl + F5), passe o mouse sobre o texto e veja o resultado 

tutorial4_5.jpg
Figura: Testando o projeto


Refêrencia: http://euclideschuma.wordpress.com/2007/10/16/tutorial-3-primeiro-exemplo-de-projeto-silverlight-no-visual-studio-2008/

 



Visual C# 2008 - Primeiro Projeto, Parte 2 de 2

clock April 19, 2009 21:41 by author Anderson

Demonstração de um primeiro projeto em Visual C# 2008 Express Edition usando Console Application. Parte 2 de 2.



Visual C# 2008 - Primeiro Projeto, Parte 1 de 2

clock April 19, 2009 21:32 by author Anderson

Demonstração de um primeiro projeto em Visual C# 2008 Express Edition usando Console Application. Parte 1 de 2.



Oracle compra Sun

clock April 19, 2009 20:29 by author Anderson

Foi confirmado a compra da Sun pela Oracle.


On April 20, 2009, Sun and Oracle announced a definitive agreement under which Oracle will acquire Sun common stock for $9.50 per share in cash. The transaction is valued at approximately $7.4 billion, or $5.6 billion net of Sun's cash and debt. The proposed transaction is subject to Sun stockholder approval, certain regulatory approvals and customary closing conditions. Until the deal closes, each company will continue to operate independently, and it is business as usual.

 

The acquisition combines best-in-class enterprise software and mission-critical computing systems. Oracle plans to engineer and deliver an integrated system—applications to disk—where all the pieces fit and work together so customers do not have to do it themselves. Customers benefit as their system integration costs go down while system performance, reliability and security go up.


Nova York, 20 abr (EFE).- A Oracle, um dos maiores fabricantes de programas e aplicativos de informática do mundo, anunciou hoje que acertou a compra da Sun Microsystems por US$ 7,4 bilhões, apenas duas semanas depois que a IBM retirou a oferta pela mesma companhia.

 

A companhia americana de software informou desse acordo de compra alcançado entre as empresas e pelo qual a Oracle oferecerá US$ 9,5 por título a cada acionista da Sun.

 

Isso representa uma valorização de 42% em relação aos US$ 6,69 ao qual cada papel da Sun fechou no Nasdaq, o mercado onde a empresa, com sede em Santa Clara, Califórnia, cota.

 

"A compra de Sun transforma o setor das tecnologias da informação. A Oracle será a única companhia que poderá desenhar um sistema integrado onde todas as peças casam e funcionam juntas, de modo que os clientes não terão que uni-las eles mesmos", assegurou o executivo-chefe da empresa, Larry Ellison, em comunicado.

 

Já o presidente da Oracle, Safra Catz, afirmou que o acordo poderia fornecer ao lucro da companhia pelo menos US$ 0,15 por ação um ano após o fim da operação, o que transformaria a compra em uma transação mais rentável que as de BEA Systems, Peoplesoft e Siebel juntas. EFE





Segue referência

http://www.sun.com/third-party/global/oracle/index.jsp
http://g1.globo.com/Noticias/Mundo/0,,MUL1091630-5602,00-ORACLE+COMPRA+SUN+MICROSYSTEMS+POR+US+BILHOES.html



Introdução ao RMI

clock April 17, 2009 15:27 by author Anderson
Introdução á Computação Distribuida com RMI

A tecnologia RMI - Remote Method Invocation (Invocação de Métodos Remotos), foi primeiramente introduzida no Java, no JDK versão 1.1, elevando a programação para redes em um patamar mais elevado. Apesar do RMI ser relativamente fácil, ele põe o desenvolvedor Java frente à um novo paradigma, o mundo da computação de objetos distribuídos. Este guia prático vai lhe introduzir à esta tecnologia versátil, que melhorou muito desde sua primeira versão.

Objetivo

O principal objetivo para os criadores (designers) do RMI era permitir os programadores a desenvolverem programas distribuídos em Java com a mesma sintaxe e semântica usada em programas não-distribuídos. Para isso, eles tiveram que mapear cuidadosamente como classes Java e objetos trabalham em uma única Java Virtual Machine (JVM) para um novo modelo de como as classes e objetos trabalhariam num ambiente distribuído de computação (múltiplas JVMs). Os arquitetos do RMI tentaram fazer com que o uso dos objetos distribuídos em Java fosse similar ao uso de objetos Java locais. Esta seção introduz a arquitetura RMI da perspectiva dos objetos Java remotos distribuídos, e explora as diferenças de comportamento com objetos locais. A arquitetura RMI define como os objetos se comportam, como e quando exceções podem ocorrer, como a memória é gerenciada e como os parâmetros são passados e retornados de métodos remotos.

Arquitetura Java RMI

A arquitetura RMI estende a segurança e robustez da arquitetura Java para o mundo da computação distribuída.

Interfaces: O coração do RMI

A arquitetura RMI é baseada em um importante princípio: a definição do comportamento e a implementação do comportamento são conceitos separados. RMI permite que o código que define o comportamento e o código que implementa o comportamento permanecerem separados e rodarem em JVMs separadas. Em RMI, a definição do serviço remoto é codificada usando uma interface Java. A implementação do serviço remoto é codificada em uma classe. Logo, a chave para se entender o RMI é lembrar que as interfaces definem o comportamento e as classes definem a implementação. A classe que implementa o comportamento roda do lado do servidor RMI. A classe que roda no cliente atua como um Proxy para o serviço remoto. Veja o seguinte diagrama: O programa cliente faz chamadas de métodos pelo objeto Proxy, o RMI envia a requisição para a JVM remota e redireciona para a implementação. Qualquer valor retornado pela implementação é devolvido ao Proxy e então ao programa cliente.

Arquitetura de Camadas do RMI

Com o entendimento da arquitetura RMI num alto nível, vamos dar uma breve olhada na sua implementação. A implementação do RMI é essencialmente feita de três camadas de abstração. A camada Stub e Skeleton está abaixo dos olhos do desenvolvedor. Esta camada intercepta as chamadas de métodos feitas pelo cliente para que a variável de referência da interface redirecione essas chamadas para o serviço RMI remoto. A próxima camada é a Remote Reference Layer. Esta camada sabe como interpretar e gerencias referências feitas dos clientes para os objetos do serviço remoto. A conexão do cliente ao servidor é Unicast (uma-para-um). A camada de transporte é baseada nas conexões TCP/IP entre as maquinas em uma rede. Usando essa arquitetura de camadas, cada uma das camadas poderia ser facilmente melhorada ou substituída sem afetar o resto do sistema. Por exemplo, a camada de transporte poderia ser substituída por uma camada que implemente conexões UDP/IP, sem afetar as camadas superiores.

Nomeando Objetos Remotos

Como um cliente acha o serviço remoto RMI? Os clientes acham os serviços remotos usando o serviço de nomeação ou diretório (naming or directory). Isso parece um pouco redundante, mas o serviço de nomeação ou diretório roda como um endereço bem formado (host:port). O RMI pode usar diferentes tipos de serviços de diretório, incluindo o JNDI. O próprio RMI inclue um simples serviço, chamado de RMI Registry. O RMI Registry roda em cada maquina que hospeda o serviço remoto, por definição na porta 1099. Numa máquina host, um programa servidor cria um serviço remoto, primeiramente criando o objeto que implemente aquele serviço. Em seguida ele exporta aquele objeto para o RMI. Quando o objeto é exportado o RMI cria um serviço que aguarda as conexões do cliente. O servidor registra o objeto no RMI Registry, com um nome público. No lado do cliente o RMI Registry é acessado através da classe estática Naming. Ela provém o método lookup( ), que o cliente usa para requisitar o registro. Esse método aceita a URL que especifica o nome do servidor e o nome do serviço desejado. O método retorna uma referência remota para o objeto do serviço. A URL é formada como seguinte:

rmi://<host_name>[:port_number]/<service_name>  

Usando o RMI

Agora vamos trabalhar com um sistema que realmente implementa um sistema com RMI. Vamos criar um aplicativo simples, cliente e servidor, que executa métodos do objeto remoto. Para tanto não necessitamos de duas máquinas distintas ou com IP distintos. O exemplo pode ser rodado na mesma máquina, pois o RMI sabe como trabalhar com isso, mesmo que o host e o cliente sejam na mesma localidade. Um sistema RMI é composto de várias partes:

  • Definição das interfaces para os serviços remotos
  • Implementações dos serviços remotos
  • Arquivos de Stub e Skeletons
  • Um servidor para hospedar os serviços remotos
  • Um serviço de RMI Naming que permite o cliente achar os serviços remotos
  • Um provedor de arquivos de classes (servidor http ou ftp)
  • Um programa cliente que necessita os serviços remotos
    Criando seu aplicativo com RMI
    Agora iremos, de fato, criar um sistema que implemente o RMI, utilizando-se de um programa cliente e um programa servidor. Não utilizaremos um servidor FTP ou HTTP, no entanto utilizaremos os programas na mesma máquina e uma mesma estrutura de diretórios. Os passos a serem seguidos agora são:
  • Escrever e compilar o código Java da interface
  • Escrever e compilar o código Java das implementações das classes
  • Gerar as classes Stub e Skeleton das classes de implementação Crie um diretório para salvar todos os seus arquivos de projeto. Você pode fazer o download do código fonte usado nesse tutorial.
    Interfaces
    O primeiro passo, como dito, será criar a interface e compilá-la. A interface define todas as funcionalidades remotas oferecidas pelo serviço. Nomeio o arquivo como: Mensageiro.java.
    1. import java.rmi.Remote;   
    2. import java.rmi.RemoteException;   
    3.   
    4. public interface Mensageiro extends Remote {   
    5.   
    6.     public void enviarMensagem( String msg ) throws RemoteException;   
    7.     public String lerMensagem() throws RemoteException;   
    8. }  

    Perceba que esta interface estende a classe Remote, e cada assinatura de método declara as funcionalidades do serviço, e que podem gerar uma exceção RemoteException. Salve este arquivo (Mensageiro.java) no seu diretório e compile, com a seguinte linha de comando:
    1. javac Mensageiro.java  

    Implementação
    Agora, você deverá escrever a implementação para o serviço remoto, ou seja, o código a ser executado no ambiente remoto. Nomeia o arquivo como: MensageiroImpl.java.
    1. import java.rmi.RemoteException;   
    2. import java.rmi.server.UnicastRemoteObject;   
    3.   
    4. public class MensageiroImpl extends UnicastRemoteObject implements Mensageiro {   
    5.   
    6.     public MensageiroImpl() throws RemoteException {   
    7.         super();   
    8.     }   
    9.   
    10.     public void enviarMensagem( String msg ) throws RemoteException {   
    11.         System.out.println( msg );   
    12.     }   
    13.   
    14.     public String lerMensagem() throws RemoteException {   
    15.         return "This is not a Hello World! message";   
    16.     }   
    17. }  

    Salve este arquivo (MensageiroImpl.java) no seu diretório e compile, com a seguinte linha de comando:
    1. javac MensageiroImpl.java  

    Observe que a classe se utiliza (estende) da classe UnicastRemoteObject para linkar com o sistema RMI. Neste exemplo a classe estende a classe UnicastRemoteObject diretamente. Isto não é realmente necessário, mas essa discusão fica para uma próxima etapa. Quando uma classe estende a classe UnicastRemoteObject, ele deve prover um construtor que declare que ele pode lançar uma exceção RemoteException, pois quando o método super( ) é chamado, ele ativa o código em UnicastRemoteObject, que executa o link RMI e a iniciação do objeto remoto.
    Stubs e Skeletons
    Gere os arquivos Stubs e Skeletons da classe de implementação que roda no servidor. Para tanto, execute o comando rmic, compilador RMI do JDK.
    1. rmic MensageiroImpl  

    Após a execução deste comando, você deveria ver no seu diretório os arquivos Mensageiro_Stub.class, Mensageiro_Skeleton.class. Servidor O serviço remoto RMI deve ser hospedado em um processo servidor. A classe MensageiroServer é um servidor bem simples, que provê serviços essenciais. Salve o arquivo como: MensageiroServer.java.
    1. import java.rmi.Naming;   
    2.   
    3. public class MensageiroServer {   
    4.   
    5.     public MensageiroServer() {   
    6.         try {   
    7.             Mensageiro m = new MensageiroImpl();   
    8.             Naming.rebind("rmi://localhost:1099/MensageiroService", m);   
    9.         }   
    10.         catch( Exception e ) {   
    11.             System.out.println( "Trouble: " + e );   
    12.         }   
    13.     }   
    14.   
    15.     public static void main(String[] args) {   
    16.         new MensageiroServer();   
    17.     }   
    18. }  

    Salve este arquivo (MensageiroServer.java) no seu diretório e compile, com a seguinte linha de comando: > javac MensageiroServer.java
    Cliente
    O código fonte para o cliente é o seguinte. Salve o arquivo como: MensageiroClient.java.
    1. import java.rmi.Naming;   
    2. import java.rmi.RemoteException;   
    3. import java.rmi.NotBoundException;   
    4. import java.net.MalformedURLException;   
    5.   
    6. public class MensageiroClient {   
    7.   
    8.     public static void main( String args[] ) {   
    9.         try {   
    10.             Mensageiro m = (Mensageiro) Naming.lookup( "rmi://localhost/MensageiroService" );   
    11.             System.out.println( m.lerMensagem() );   
    12.             m.enviarMensagem( "Hello World!" );   
    13.         }   
    14.         catch( MalformedURLException e ) {   
    15.             System.out.println();   
    16.             System.out.println( "MalformedURLException: " + e.toString() );   
    17.         }   
    18.         catch( RemoteException e ) {   
    19.             System.out.println();   
    20.             System.out.println( "RemoteException: " + e.toString() );   
    21.         }   
    22.         catch( NotBoundException e ) {   
    23.             System.out.println();   
    24.             System.out.println( "NotBoundException: " + e.toString() );   
    25.         }   
    26.         catch( Exception e ) {   
    27.             System.out.println();   
    28.             System.out.println( "Exception: " + e.toString() );   
    29.         }   
    30.     }   
    31. }  

    Salve este arquivo (MensageiroClient.java) no seu diretório e compile, com a seguinte linha de comando:
    1. javac MensageiroClient.java  

    Rodando o sistema RMI
    Agora que todos os arquivos do projeto de exemplo foram criados e devidamente compilados, estamos prontos para rodar o sistema! Você precisará abrir três diferentes consoles do MS-DOS no seu Windows, ou outro, caso utilize um diferente sistema operacional. Em um dos consoles vai rodar o programa servidor, no outro o cliente e no terceiro o RMI Registry. Inicie com o RMI Registry. Você deve estar no mesmo diretório em que estão gravados seus arquivos para rodar o aplicativo. Execute a seguinte linha de comando:
    1. rmiregistry  

    Isso irá iniciar o RMI Registry e rodá-lo. No segundo console vamos executar o programa servidor. Você deve estar no mesmo diretório em que estão gravados seus arquivos para rodar o aplicativo. Execute o seguinte comando:
    1. java MensageiroServer  

    Isso irá iniciar, carregar a implementação na memória e esperar pela conexão cliente. No último console, rode o programa cliente. Você deve estar no mesmo diretório em que estão gravados seus arquivos para rodar o aplicativo. Excute o comando:
    1. java MensageiroClient  

    Se tudo correr bem, que é o que esperamos e o que deveria acontecer, a seguinte saída será gerada nos consoles 2 (servidor) e 3 (cliente). No console 2 (servidor):
    1. Hellow World!  

    No console 3 (cliente):
    1. This is not a Hello World! message  

    É isso aí. Você acabou de criar um sistema utilizando a tecnologia RMI. Apesar de você ter rodado os programas na mesma máquina, o RMI usa a pilha de rede TCP/IP para se comunicar entre as três diferentes instâncias da JVM. Espero que tenham gostado e aprendido com esse pequeno exemplo de como se usar o RMI.

  • Fonte:Daniel Destro



    XStream: Trabalhando com facilmente XML em Java

    clock April 17, 2009 15:15 by author Anderson
    Introdução

    Partindo do pressuposto que o leitor já conhece XML e sua importância, este artigo pretende abordar como usar XStream para realizar mapeamento de objetos Java para Documentos XML e vice-versa. Também serão citadas as vantagens e limitações desta ferramenta.

    Caminhos para trabalhar com Java e XML

    Existem diversas formas de se trabalhar com XML e Java, dentre elas, SAX, DOM, Digester. Cada uma serve ao seu propósito. Por exemplo, SAX é estremamente eficiente na leitura de arquivos. DOM, por sua vez oferece um melhor controle da estrutura hierárquica dos documentos XML, sendo mais adequado para a escrita de documentos para os quais não se tem total domínio da estrutura (esquema). Finalmente, Digester oferece uma forma interessante de mapear documentos XML para objetos Java e vice-versa. Entretanto, exige que o mapeamento seja manualmente configurado. E com vocês, XStream! XStream é uma outra forma de realiazar pontes XML-Java. Suas principais características, citadas na página oficial, são:

  • Facilidade de uso. Geralmente só se precisa conhecer uma classe.
  • Não é necessário configurar o mapeamento manualmente. XStream se baseia no mecanismo de Reflection pelo qual é possivel descobir dinamicamente quais os atributos de uma classe Java e os respectivos valores de seus objetos.
  • XML legível e mais compacto que a serialização nativa de Java.
  • Não exige que os objetos sigam alguma regra em particular.
  • Suporta referências duplicadas e circulares dos objetos.
  • Pode ser integrada com outras APIs.
  • A estratégia de conversão pode ser configurada.
  • Realiza uma avaliação prévia se o documento XML não está mal-formado, exibindo eventuais mensagens de erros. A próxima seção abordará um exemplo de como XStream pode ser usado.
    Exemplo passo a passo
    Inicialmente é necessário baixar o arquivo xstream*.jar e o xpp3*.jar em aqui. Na época que este artigo foi escrito, a versões mais novas eram a xstream-1.01 e xpp3-1.1.3.3_min respectivamente. Já mandou baixar? Ótimo. Enquanto você espera o download, pode dar uma expiadinha do problema a ser ilustrado. Suponha que se queira construir uma Agenda Eletrônica Pessoal. Imagine uma agenda para celular. Deseja-se facilidade, eficiência, portabilidade, integração com outros sistemas, e tal. Decide-se então guardar os contatos em XML. Esses contatos são lista de pessoas, que possuem nome, email e um telefone comercial. Esse telefone comercial contém um número para o DDD e o número local. Passa isso, constrói-se as seguintes classes Java:
    1. public class Pessoa {   
    2.     private String nome;   
    3.     private String email;   
    4.     private Telefone foneComercial;   
    5.            
    6.         // métodos Setters e Getters   
    7. }   
    8.   
    9. public class Telefone {   
    10.     int ddd;   
    11.     String numero;          
    12.         // métodos Setters e Getters    
    13. }  

    Ok, até aqui tudo bem. Mas e aí, como uso XStream? Tá saltando uma resposta quentinha na próxima seção. A essas horas, mesmo usando modem, é provável que já tenha terminado de baixar os arquivos. Coloque-os em seu classpath e volte aqui.
    Exemplo passo a passo

    1. import java.util.ArrayList;   
    2. import java.util.List;   
    3.   
    4. import com.thoughtworks.xstream.XStream;   
    5.   
    6. public class TesteXStream {   
    7.     public static void main(String[] args) {   
    8.         // Criando um objeto XStream           
    9.         XStream xstream = new XStream();   
    10.   
    11.         // Criando alguns dados   
    12.         Pessoa vinci = new Pessoa();   
    13.         vinci.setNome("Vinci Pegoretti Amorim");   
    14.         vinci.setEmail("vinci_amorim@yahoo.com.br");   
    15.   
    16.         Telefone foneDoVinci = new Telefone();   
    17.         foneDoVinci.setDdd(55);   
    18.         foneDoVinci.setNumero("5555 5555");   
    19.   
    20.         vinci.setFoneComercial(foneDoVinci);   
    21.         List contatos = new ArrayList(1);   
    22.         contatos.add(vinci);   
    23.   
    24.         // Passando os dados de Objetos Java para XML   
    25.         String contatosEmXML = xstream.toXML(contatos);   
    26.   
    27.         System.out.println("\nContatos em XML:");   
    28.         System.out.println(contatosEmXML);   
    29.   
    30.         // Passando os dados de XML para Objetos Java   
    31.         List amigos = (List) xstream.fromXML(contatosEmXML);   
    32.         Pessoa amigo = (Pessoa) amigos.get(0);   
    33.         Telefone foneDoAmigo = amigo.getFoneComercial();   
    34.   
    35.         System.out.println("\nAmigo como Objeto Java:");   
    36.         System.out.println("Nome: " + amigo.getNome());   
    37.         System.out.println(   
    38.             "Fone Comercial: ("  
    39.                 + foneDoAmigo.getDdd()   
    40.                 + ") "  
    41.                 + foneDoAmigo.getNumero());   
    42.     }   
    43. }  

    Primeiro é necessário importar a classe com.thoughtworks.xstream.XStream e criar um objeto para ela. Depois, deve-se implementar um código como o seguinte:
    1. String mensagemEmXML = xstream.toXML(objetoRaiz);  

    Feito isso, seus dados são passados para XML. Rodando o testeXStream espera-se obter a saída abaixo:
    1. Contatos em XML:   
    2. <list>   
    3.   <Pessoa>   
    4.     <email>vinci_amorim@yahoo.com.br</email>   
    5.     <foneComercial class="Telefone">   
    6.       <ddd>55</ddd>   
    7.       <numero>5555 5555</numero>   
    8.     </foneComercial>   
    9.     <nome>Vinci Pegoretti Amorim</nome>   
    10.   </Pessoa>   
    11. </list>   
    12.   
    13. Amigo como Objeto Java:   
    14. Nome: Vinci Pegoretti Amorim   
    15. Fone Comercial: (555555 5555  

    Se você já conhece outras formas de mapeamento Java-XML certamente estará impressionado com a facilidade de XStream. Mas algumas vezes você pode querer mapear nomes para as tags diferentes do nome da classe. Para fazer isso com XStream basta, após a criação do seu objeto da classe XStream, escrever:
    1. xstream.alias("nomeDoObjetoEmXML", NomeDoObjetoEmJava);  

    Para este caso podería-se fazer algo como:
    1. xstream.alias("contato", Pessoa.class);   
    2. xstream.alias("telefone", Telefone.class);   
    3. xstream.alias("lista", ArrayList.class);  

    A nova saída seria:
    1. Contatos em XML:   
    2. <lista>   
    3.   <contato>   
    4.     <email>vinci_amorim@yahoo.com.br</email>   
    5.     <foneComercial>   
    6.       <ddd>55</ddd>   
    7.       <numero>5555 5555</numero>   
    8.     </foneComercial>   
    9.     <nome>Vinci Pegoretti Amorim</nome>   
    10.   </contato>   
    11. </lista>   
    12.   
    13. Amigo como Objeto Java:   
    14. Nome: Vinci Pegoretti Amorim   
    15. Fone Comercial: (555555 5555  

    Para a maioria dos casos, este conhecimento já é o suficiente. Mas uma visita ao site oficial sempre é recomendado.
    Conclusões
    Como nem tudo são flores, XStream possui algumas limitações. Por exemplo, o texto "Blá" e os atributos do XML abaixo são simplesmente igorados.
    1. <pessoa id="5" sexo="masculino"> Blá   
    2.   <email>vinci_amorim@yahoo.com.br</email>   
    3.   <foneComercial>   
    4.     <ddd>31</ddd>   
    5.     <numero>3899 1994</numero>   
    6.   </foneComercial>   
    7.   <nome>Vinci Pegoretti Amorim</nome>   
    8. </pessoa>  

    Entretando, em situações onde se tem domínio sobre a estrutura a ser usada, isso não representa grandes problemas. Vai trabalhar com XML? A sugestão é: tente usar XStream. Se não for possível, tente outra. Se você entendeu como usar XStream e onde é recomendado o seu uso, a missão foi cumprida. Abraços e até a próxima.
  •  


    Fonte:www.guj.com.br - Vinci Pegoretti Amorim



    Vazamento de memória no Java

    clock April 17, 2009 14:57 by author Anderson
    Introdução

    Garbage Collector == adeus vazamento de memória? Neste pequenino artigo, vamos mostrar como o Garbage Collector não tem como perceber sempre que você não está usando alguma coisa! Isto é, vai ocorrer um "pseudo" vazamento de memória, ou como conhecemos, memory leak. Claro que esse memory leak pode ser evitado. Aqui você vai aprender a ter um poquinho mais de cautela!

    Código

    Vou direto para o exemplo mais clássico! Simulando uma pilha com array de Objects!

    Sutil. não? Imagine que você populou a sua pilha com 1000 objetos. Depois você começou a dar pop, até esvaziar! Tudo ok? Como você viu, não! Você NÃO está mais utilizando aqueles elementos da pilha, e quem esta utilizando a sua classe provavelmente também não está mais, mas mesmo assim você tem referência para aqueles 1000 objetos, enforcando a memória da sua virtual machine, e fazendo o garbage collector de bobo! Para corrigir isso, é mais que óbvio:

    Com este null, o objeto pode ser coletado! Você acha que isto só acontece com arrays, e que você esta a salvo já que usa a poderosa collections framework? Doce ilusão!

    Ok, ok, sei que você poderia usar aqui o java.util.Stack, mas o que eu queria era ilustrar que você não está salvo disto acontecer, especialmente quando mexe com coleções e arrays! Sei que este exemplo que acabo de dar, o cara teria de ser beeeem descuidado, já que o push dele não sobreescreve um elemento que já existir, ele faz pior, ele adiciona no meio!!!!! Quem conhece a ArrayList sabe disso! Portanto, muito cuidado! Se você está mexendo em uma coleção, e utilizando algo para apontar um dos objetos, pense se você precisa manter os outros na coleção!

    Conclusão

    O Garbage Collector é o seu melhor amigo, mas pode deixar você com alguns vícios. Este tipo de problema aparece em inúmeras situações. Você já pode ter implementado algo que "vazasse" memória assim, e nunca percebeu, já que era pequeno. Em uma aplicação grande, isso pode matar a sua JVM! Em um futuro próximo, estamos lançando o tutorial sobre o Garbage Collector básico. E mais para frente, um sobre Weak, Soft e Phantom references do pacote java.lang.ref. É um tópico MUITO interessante para quem gosta de saber como o java realmente funciona!


    Fonte: www.guj.com.br - Paulo Silveira



    Como fazer seus visitantes comentarem seu blog

    clock April 16, 2009 21:03 by author Anderson

    Nada me deixa mais contente que visitar outros blogs e, econtrar uma referência ou até mesmo um elogio ao Professional Blogger. Porém o motivo de escrever este artigo, não apenas um simples Link Love, mas sim um exemplo claro de como levar seus leitores e\ou paraquedistas do Google diretamente para o formulário de comentário no blog.

    O Pedro Turambar do blog O Crepúsculo escreveu um artigo muito interessante sobre Dicas para entender os homens. O autor aplicou uma das técnicas que escrevi anteriormente, “se os usuários estão pesquisando sobre o Google Chrome e chegam ao seu blog, por que você não escreve um artigo sobre isso para aumentar a relevância?”. Pois, o Pedro fez mais do que isso, além de aproveitar a oportunidade que as buscas lhe ofereceram, ele ainda abordou um assunto que possui um volume de pesquisa considerável, e mais, moldou o assunto com muito humor e não precisou ser apelativo e\ou ofensivo nas palavras.

    O resultado do artigo é que ao final do texto, o seu subconsciente praticamente obriga os seus dedos para escrever um comentário, por isso não posso deixar de colocar em um nível mais detalhado, como você vai fazer seus leiores comentarem no blog?

    Toda ação tem um reação

     O usuário é seu foco, pelo menos é o que deveria, por isso, quando o assunto é humanos, trate de mexer com os sentimentos deles. No exemplo do blog O Crepúsculo, o Pedro mexeu com sensibilidade humorística das pessoas, por isso foi inevitável passar por aquele artigo e não deixar um comentário. Portanto se você quer uma reação, precisa provocar um ação.

    No artigo Afiliados por clique, eles ganham, você perde! gerei uma enorme reação ao confrontar alguns programas de afiliados, se ler o artigo e observar os comentários, irá perceber como alguns parágrafos conseguem dividir opiniões, acontece que a “polêmica” é válida, mas deve ser usada com algo chamado “respeito”, você pode fazer “barulho” na Blogosfera, mas não pode ofender ninguém.

    Quanto mais “ação” o seu artigo contém, mas comentários o seu artigo terá!

    Artigos Completos não são os melhores

    Algumas vezes leio artigos tão completos na blogosfera que, é praticamente impossível escrever um comentário para tal. Por mais que você queira apresentar um Conteúdo de Qualidade, mesmo assim não pode esquecer que quantidade não é qualidade, recomendo que você divida artigos grandes em várias partes, neste caso você fará que seus leitores retornem ao blog para ler a continuação do artigo, isso se eles não assinarem os feeds.

    Outro efeito colateral dos artigos completos é sentimento de cansaço que os usuários sentem ao ler aquele artigo com mais várias linhas e um milhão de parágrafos, é incrível o fato de muitos bloggers esquecerem que os buscadores analisam “palavras-chave” ao invés de “artigos-chave”, a relevância custa muito menos do que muitos imaginam, para provar isso, é só digitar imposto sobre férias no Google e veja como consegui relevância em um assunto totalmente diferente do blog.

    Seu artigo é uma pergunta?

    Os usuários precisam ter liberdade para analizar, duvidar, gostar e até criticar o seu artigo, por isso você precia escrever de forma que esses espaços sejam evidentes. As vezes é necessário gerar dúvida, apresentar dois pontos diferentes para que os usuários possam se identificar com uma ou outra afirmação e então decida comentar sobre aquilo.

    Para finalizar, uma das maneiras mais interessantes de abrir espaço para os usuários é realizar perguntas, principalmente no final do artigo, para que eles entendam que o artigo foi concluído, mas existem um caminho para eles complementarem o artigo.

    E você, sabe outra forma de aumentar o número de comentários do blog? 


    Fonte:http://www.professionalblogger.com.br



    Aplicativo Google para legendar vídeos

    clock April 16, 2009 20:13 by author Anderson

    O Google liberou o acesso a um aplicativo online, ainda em fase beta, que permite colocar legendas em cima de vídeos postados no YouTube.

    Das 13 horas de vídeo que o serviço recebe em upload por minuto, a maior parte tem áudio em inglês. Há ainda um volume crescente de vídeos produzidos num idioma e assistido por gente que fala outra língua.

    De acordo com o blog do YouTube, ferramentas para legendar vídeos disponíveis na web muitas vezes esbarram em problemas de compatibilidade com diferentes formatos de vídeo e de arquivos de texto. A proposta do CaptionTube é tornar-se um

    a espécie de “editor de legendas” oficial para vídeos postados no YouTube.

    Para usar o editor, é necessário ter uma conta do Google. O editor suporta dezenas de línguas e exporta os arquivos gerados direto para a conta do usuário no YouTube.


    Fonte:http://info.abril.com.br



    HTML5 a nova versão da web

    clock April 16, 2009 19:58 by author Anderson

    Quem acessa a internet desde seu início comercial – meados dos anos 90 – acompanhou a evolução da rede mundial em diversos aspectos. Um dos pontos que mais sofreu mutações foi a interface: de páginas estáticas e meramente informativas, até interações complexas permitidas por meio de tecnologias como o Ajax. Por trás de todo esse desenvolvimento, está uma linguagem que poucos vêem, mas que é a base de um mundo de páginas da web: o HTML, casamento entre os padrões HyTime e SGML, que surgiu no início dos anos 90.

    Depois de mais de dez anos do lançamento da última versão da linguagem, o HTML 4, o Web Hypertext Application Technology Working Group está dando os últimos passos para anunciar a tão esperada versão 5. A último draft foi anunciado no início do ano e as cerca de 500 empresas que participam do grupo devem enviar suas correções e sugestões até o final de junho de 2009. A partir daí, cria-se o padrão de fato para que aplicações e browsers possam se adequar às novas funcionalidades.

    Novas funções
    “A ideia é que ele seja liberado em 2010. O principal destaque do HTML 5 é a possibilidade de agregar no código comando para áudio e vídeo”, afirma Vagner Diniz, gerente geral do W3C Escritório Brasil, consórcio que define os padrões técnicos a serem utilizados na web. São comandos específicos no lugar das tags quebra-galhos usadas hoje em dia. As famosas object e embed poderão ser substituídas pelas etiquetas e , para inclusão dos respectivos objetos multimídia.

    As novas tags trazem funções interessantes de maneira nativa, excluindo a necessidade de embutir elementos externos nas páginas. Funções obtidas com o uso de Ajax, como os movimentos de arrastar-e-soltar itens de uma página, poderão ser chamadas direto do código HTML. “O Javascript faz referência a elementos do HTML. Como o HTML terá novos elementos, então o Ajax também será aprimorado”, afirma Carlos Ceccone, analista de projetos do W3C.

    Aplicações baseadas na web também serão mais ágeis, pois menos dados serão requisitados de servidores. O HTML 5 inclui a possibilidade de inserir APIs dentro do código. O acesso local às informações facilitará funções de cache, busca e o acesso off-line de serviços da web. O plugin Google Gears, por exemplo, já é compatível com HTML 5, assim como o Adobe Air. Mas o grande burburinho começou após a apresentação do novo Gmail para dispostivos móveis que já utiliza recursos do HTML5, como pode ser visto na apresentação do VP de engenharia do Google, Vic gundotra.

    Diniz também atenta para a limpeza do código. Uma mesma página escrita em HTML 5 será bem mais simples do que a em HTML 4. Para o desenvolvedor, ficará muito mais simples de programar. É possível ver uma comparação de uma página de um blog escrita nas duas versões da linguagem no site Hobo Web.

    Outra novidade é a incorporação de funcionalidades de tecnologias para gráficos dinâmicos, como o Flash e o Silverlight. Será possível criar animações com gráficos vetoriais diretamente no código, com o uso da tag <canvas&gt. A web semântica também começa a aparecer no HTML 5 – em vez de enxergar um elemento título, legenda ou parágrafo, a linguagem conseguirá interpretar o conteúdo que está naquela caixa de texto.

    Navegadores compatíveis
    Mas não basta o padrão HTML chegar em sua versão 5 e os browsers não se adequerem para conseguir a renderização completa das novas funcionalidades. A página na Wikipedia lista não só as novidades do HTML 5, como mostra qual ferramenta já faz a renderização adequada das novidades.

    Cada browser tem seu engine ou adota um já existente. O Internet Explorer, inclusive na recente versão 8, utiliza o Trident. O Gecko, da fundação Mozilla, é utilizado pelo browser Firefox, entre outros; o WebKit, desenvolvido pela Apple a partir do engine de código aberto KHTML, é usado no Safári, no Google Chrome e nos celulares Nokia. Já o Presto é a ferramenta do Opera.

    O W3C disponibiliza regurlarmente um estudo com comparações entre HTML 4 e 5, na medida em que a recomendação HTML 5 avança.


    Fonte:http://info.abril.com.br



    Anatel regulamenta internet banda larga pela rede elétrica

    clock April 16, 2009 19:01 by author Anderson

    RIO - A internet de banda larga, com alta velocidade, é um dos grandes sonhos de todo internauta. O problema é que ela ainda é cara e não está disponível em todos os lugares. Nesta segunda-feira, no entanto, esse sonho ficou mais próximo da realidade com a regulamentação, pela Anatel, da internet pela rede elétrica.

    O analista de sistemas Jeferson Teixeira depende da internet para trabalhar, mas desde que se mudou para a casa nova em São Gonçalo, há três meses, não conseguiu ter o serviço de banda larga. E se houvesse internet na tomada da energia elétrica?

    - Eu acho que seria a solução, eu poderia colocar em qualquer parte da casa.

    O sistema já existe e funciona mais ou menos como uma TV a cabo. A empresa que fornece o serviço de internet libera o sinal para rede de energia elétrica. Esse sinal viaja pelos fios até a casa do usuário. Lá ele vai precisar de um aparelho, um modem, ligado a qualquer tomada da casa que vai permitir o acesso á internet rápida.

    No Brasil o sistema já está sendo testado em Barreirinhas no Maranhão, em Goiânia, São Paulo, Santo Antônio da Platina no Paraná e em Porto Alegre.

    O internauta brasileiro vai ter que esperar um pouco mais essa nova internet. Ela só vai estar disponível depois de um acordo entre as empresas de telecomunicações e as concessionárias de energia elétrica. A Aneel (Agência Nacional de Energia Elétrica) já esta estudando o assunto para criar as regras de exploração do serviço.

    Em São Paulo, o Engenheiro Clinton Namur participa dos testes da internet via rede elétrica. Ele acessa a web de onde quiser, de qualquer parte da casa que tenha uma tomada.

    - Se eu quero assistir um joguinho, por exemplo, eu assisto aqui, se eu quero ler como se fosse um livro, eu levo para o quarto - diz.

    Clinton diz que a velocidade ficou bem mais rápida.

    - Eu achei fantástica essa idéia, que eu abracei desde o começo e acho que para mim está atendendo perfeitamente, maravilhoso - complementa.


    Fonte:http://oglobo.globo.com

     



    Visual Basic .NET

    clock April 15, 2009 16:30 by author Anderson

    Visual Basic.NET é uma linguagem de programação totalmente orientada a objetos e com suporte total a UML, criada pela Microsoft e distribuída com o Visual Studio .NET (Versão seguinte ao Visual Basic 6.0), embora hoje já haja o Visual Basic 2008.

    O Visual Basic.NET é um produto extremamente diferente do antigo Visual Basic 6.0, não podendo ser considerada uma versão seguinte. Não apenas a maneira de programar foi alterada, mas todo conceito de orientação a objetos trouxe poder para a linguagem. A Microsoft simplesmente descontinuou o antigo Visual Basic 6.0 tornando o produto parecido com as demais linguagens do Visual Studio, parecido em questões de recursos e portabilidade pois o Visual Basic.NET ainda é muito diferentes de liguagens como o Visual C++, C#, etc. Porém esta nova versão aproximou o Visual Basic.NET das grandes linguagens de programação, aumentando a aceitação dos programadores Java e até mesmo C++, embora programadores Java caso tenham que migrar para plataforma Microsoft preferem o C#. Apesar da linguagem ser parecida com o antigo Visual Basic 6.0 a migração destes programadores para a nova plataforma e utilização do Visual Basic.NET é mais fácil para programadores que utilizam linguagens orientada a objeto por causa da grande diferença. Os programadores do antigo Visual Basic 6.0 acostumados com a orientação a eventos encontram dificuldades para utilizar o Visual Basic.NET.

    Sintaxe VB.NET e VB

    O seguinte exemplo simples demonstra a similaridade entre sintaxe VB.NET e VB. Ambos os exemplos aparecer uma caixa de mensagem dizendo "Olá, Mundo" com um botão OK.

    Clássico VB exemplo:

           Private Sub Command1_Click () MsgBox "Olá, Mundo" End Sub 

    VB.NET Um exemplo:

           Private Sub Button1_Click (ByVal remetente Como System. Object, ByVal e Como System.
    EventArgs) _ Handles Button1. Clique MessageBox. Show ( "Olá, Mundo") 'MsgBox
    "Olá, Mundo") pode ser usado como bem End Sub

    Note que todas as chamadas procedimento deve ser feita com parêntesis em VB.NET, enquanto, no VB6 houve diferentes convenções para funções (parênteses necessário) e subcategorias (sem parênteses permitida, a não ser chamada utilizando a palavra-chave Call). Além disso, note que os nomes comando1 e Button1 não são obrigatórias. No entanto, esses são nomes padrão para um botão de comando VB6 e VB.NET, respectivamente. Existe uma função chamada MsgBox no namespace Microsoft.VisualBasic, que pode ser usado do mesmo modo que a função correspondente no VB6. Existe uma controvérsia sobre qual função para usar como uma melhor prática (não apenas restrito a mensagem mostrando caixas, mas também a outras características do namespace Microsoft.VisualBasic). Alguns programadores preferem e defendem que, usando linguagem de código características específicas torna mais legíveis (por exemplo, utilizando int (C #) ou Integer (VB.NET) em vez de System.Int32). O exemplo a seguir mostra uma diferença entre VB6 e VB.NET. Ambos os exemplos descarregar a janela ativa. Clássico VB exemplo:

          Private Sub cmdClose_Click () Esvaziar Me End Sub

    VB.NET Um exemplo:

          Private Sub btnClose_Click (ByVal remetente Como System. Object, ByVal e Como System.
    EventArgs) _ Handles btnClose. Clique em mim. Close () End Sub

    Nota o "cmd" sendo substituídos com o prefixo 'btn' prefixo, conformes à nova convenção anteriormente mencionados. Os seguintes são equivalentes: VB6 Exemplo:

           Private Sub Timer1_Timer () mim. Altura = Me. Altura - 1 End Sub

    VB.NET exemplo:

           Private Sub Timer1_Tick (ByVal remetente Como System. Object, ByVal e Como System.
    EventArgs) _ Handles Timer1. Tick mim. Altura -= 1 End Sub

    Limitações

    - As versões anteriores do VB tinham várias limitações no código:

    - Nº de variáveis usadas no mesmo código.

    - Nº de arquivos abertos no mesmo código.

    - Nº de janelas abertas no mesmo código, dentre outras.

    No VB .NET existem limitações físicas, segundo a Microsoft, mas são tão altas que não há chances de serem atingidas pelo desenvolvedor, a ponto de não serem nem documentadas oficialmente.

    Arquivos Gerados

    Arquivos com extensão .vb e outros que podem ser incluídos no projeto, tais como ASP (extensão .aspx), XML (extensão .xml), arquivos HTML (extensão .html), etc. Não há distinção de arquivos de classes, janelas, controles e outros, pois todos terão a extensão .vb.


    Fonte: Wikipédia



    Visual Basic

    clock April 15, 2009 16:22 by author Anderson

    O Visual Basic é uma linguagem de programação produzida pela empresa Microsoft, e é parte integrante do pacote Microsoft Visual Studio. Sua versão mais recente faz parte do pacote Visual Studio .NET, voltada para aplicações .Net. Sua versão anterior fez parte do Microsoft Visual Studio 6.0, ainda muito utilizado atualmente.

    Um aperfeiçoamento do BASIC, a linguagem é dirigida por eventos (event driven), e possui também um ambiente de desenvolvimento integrado (IDE - Integrated Development Environment) totalmente gráfico, facilitando enormemente a construção da interface das aplicações (GUI - Graphical User Interface), daí o nome "Visual". Em suas primeiras versões, o Visual Basic não permitia acesso a bancos de dados, sendo portanto voltado apenas para iniciantes, mas devido ao sucesso entre as empresas - que faziam uso de componentes adicionais fabricados por terceiros para acesso a dados - a linguagem logo adotou tecnologias como DAO, RDO, e ADO, também da Microsoft, permitindo fácil acesso a bases de dados. Mais tarde foi adicionada também a possibilidade de criação de controles ActiveX, e, com a chegada do Visual Studio .NET, o Visual Basic - que era pseudo-orientada a objetos - tornou-se uma linguagem totalmente orientada a objetos (OO).

    Existem várias linguagens derivadas, entre as quais:

    • VBScript é a linguagem default (por definição) para Active Server Pages e pode ser usada no scripting (programação) de Windows e de páginas da Internet.
    • Visual Basic .NET é a nova versão do Visual Basic, que é parte integrante da plataforma Microsoft .NET. Essa versão nao é totalmente compatível com as versões anteriores, mas existe a possibilidade de converter códigos antigos, que após uma revisão podem ser usados no Visual Basic .NET. Para fins de comparação, essa linguagem usa o paradigma de Orientação a Objeto e você encontrará muita semelhança com o Java.
    • Visual Basic for Applications (VBA) permite a criação de macros, e está integrado em todos os produtos da família de produtos Microsoft Office, e também em outros produtos de terceiros tais como Visio (agora pertencente à Microsoft) e WordPerfect Office 2002.

     

    Sintaxe Modificada

    A partir de 2003 a sintaxe do Visual Basic mudou em vários aspéctos, apesar de ter o mesmo padrão, em vários objetos, métodos e funções como por exemplo a maneira de acesso a arquivos ficou voltada as liguagens recentes da Microsoft como ASP, ASP.NET.

    Exemplo de um programa em Visual Basic:


    Nesse exemplo, gera-se parábolas de tamanho e cores aleatórias, gerando um efeito psicodélico. A velocidade de mudança das cores pode ser alterada, mudando-se a propriedade "interval" em milissegundos.

      Private Sub DrawShape()
    Dim X As Single
    Dim Y As Single
    Dim tRadianos As Single
    Dim R As Single
    Dim A As Single
    Dim Teta As Single

      Call Randomize
    Scale (3, -3)-(-3, 3) 'Muda a Escala
    tRadianos = 25 * Atn(1) 'Círculo
    ForeColor = QBColor(Rnd() * 15) 'Muda a cor da parábola aleatóriamente

    A = 3 * Rnd() 'Aleatório usado

    For Teta = 0 To tRadianos Step 0.01 'Laço de repetição for - executa todos os comandos entre
    'For e Next um limite inicial e final definido pelo programador
    R = A * Sin(10 * Teta) 'Efeito do raio aleatório
    X = R * Cos(Teta) 'Coordenada X
    Y = R * Sin(Teta) 'Coordenada y
    PSet (X, Y)
    Next Teta

    End Sub


    Private Sub tmrTimer_Timer()
    Call DrawShape 'Evento que chama a função de tempos em tempos
    End Sub



    Ruby on Rails - História, Características

    clock April 15, 2009 14:31 by author Anderson

    Ruby é uma Linguagem de programação interpretada, com tipagem dinâmica e forte, orientada a objetos e, com várias semelhanças com Perl, Python e SmallTalk.

    Projetada tanto para a programação em grande escala quanto para codificação rápida, tem um suporte a orientação a objetos simples e prático. A linguagem foi criada pelo japonês Yukihiro Matsumoto, que aproveitou as melhores idéias das outras linguagens da época.

    Esta linguagem possui vastos repositórios de bibliotecas disponíveis em sites como Ruby Forge e Ruby Application Archive (RAA). Existe, ainda, uma ferramenta bastante útil para instalação de bibliotecas, chamada Ruby Gems, o software mais famoso desenvolvido em Ruby é o Ruby on Rails.

     

    História


    Ruby se tornou reconhecida no meio especializado desde que Dave Thomas, conhecido como um dos "Programadores Pragmáticos", adotou-o como uma de suas linguagens preferidas e acabou por escrever um dos mais completos livros sobre a linguagem, o Programming Ruby. Com o advento desta publicação, a linguagem passou a contar com uma boa fonte de iniciação e referência em inglês, aumentando consequentemente o número de adeptos da linguagem no Ocidente.

    Ultimamente, devido a grande exposição de um framework web feito em Ruby, o Ruby on Rails desenvolvido por David Heinemeier Hansson, a linguagem tem sido foco da mídia especializada justamente pela sua praticidade.

    Esta mesma praticidade inclusive é um dos conceitos básicos desta linguagem. É possível fazer algoritmos que resolvam seus problemas, não necessitando se preocupar com as limitações da linguagem ou do interpretador.

    Características


    Para manter a praticidade, a linguagem possui algumas características interessantes:

    • A sintaxe é enxuta, quase não havendo necessidade de colchetes e outros caracteres.
    • Todas as variáveis são objetos, onde até os "tipos primitivos" (tais como inteiro, real, entre outros) são classes.
    • Estão disponíveis diversos métodos de geração de código em tempo real, como os "attribute accessors".
    • Através do Ruby Gems, é possível instalar e atualizar bibliotecas com uma linha de comando, de maneira similar ao APT do Debian Linux.
    • Code blocks (blocos de código), ajudam o programador a passar um trecho de instruções para um método. A idéia é semelhante aos "callbacks" do Java, mas de uma forma extremamente simples e bem implementada.
    • Mixins, uma forma de emular a herança múltipla, sem cair nos seus problemas.
    • Tipagem dinâmica, mas forte. Isso significa que todas as variáveis devem ter um tipo (fazer parte de uma classe), mas a classe pode ser alterada dinamicamente. Os "atalhos" citados acima, por exemplo, se beneficiam da tipagem dinâmica para criar os métodos de acesso/alteração das propriedades.



    Ruby está disponível para diversas plataformas, como Microsoft Windows, .NET, Linux, Solaris e Mac OS X, além de também ser executável em cima da máquina virtual do Java (através do JRuby).

    Orientação a objetos


    Muitos programadores consideram o Ruby uma linguagem de programação totalmente orientada a objetos (de maneira similar ao SmallTalk), porém devido a inexistência de conceitos padrões para especificação de linguagens OO, isto não pode ser provado.

    Ruby não possui tipos primitivos, mas sim todos tipos são classes, assim como todas variáveis são objetos. Como exemplo, conjunto de caracteres é uma instância da classe String, inteiro é da Fixnum e matriz é Array.

    Um conceito interessante também é que a maioria dos operadores binários e unários são, na realidade, métodos. Ou seja, podem ser alterados da mesma forma que os operadores em C++. Exemplo:

    class MeuNumero < Fixnum
      def +(numero)
        42
      end
    end


    numero = MeuNumero.new(1)
    # Repare como um operador de soma é um método em ruby, ao contrário de outras linguagens
    puts numero + 2 # 1+2 = 42 ??? Sim, sobrescrevemos o método de soma para retornar 42 sempre.

    Quem está por trás do Ruby?


    Ainda hoje, Matz é o responsável por todas as decisões não-consensuais do Ruby. Ou seja, qualquer divergência quanto à implementação de uma nova funcionalidade é resolvida pelo "ditador benevolente". Apesar desta "dependência", a comunidade é forte a ponto de sobreviver "caso o Matz seja atropelado por um ônibus espacial". Existem pessoas que estão tão inteiradas com o código quanto o próprio Matz. Diferentemente de outras tecnologias opensource, não existe uma empresa por trás de suas operações, bancando os custos. O projeto sobrevive de doações feitas pelos usuários satisfeitos e por empresas que conseguiram aumentar sua produtividade utilizando Ruby.

    Links externos

     



    Fonte: Wikipédia



    Programação Orientada a Objetos usando Java

    clock April 14, 2009 11:41 by author Anderson

    Pessoal segue o Link

    http://www.argonavis.com.br/cursos/java/j100/index.html

    Tem muita coisa boa para quem tem interesse.



    Curso Básico de C# - parte 1

    clock April 14, 2009 10:51 by author Anderson

    Introdução

    Este curso destina-se aqueles que desejam iniciar o aprendizado na linguagem C# desenvolvida especialmente para a plataforma .NET. Ao acompanhar este artigo você aprenderá a criar pequenos aplicativos para desktop. Veremos aqui os conceitos básicos da linguagem C# e a IDE Visual Studio, para um melhor aproveitamento do .NET Framework. Para um melhor entendimento dos artigos que se seguem, é importante conhecimento em lógica de programação.

    A linguagem

    A linguagem de programação C# (lê-se C Sharp) surge como uma evolução da linguagem "C" e destina-se a aplicações utilizando o .NET Framework, utilizando os novos conceitos de Orientação a Objetos (OO).

    O .NET Framework

    Basicamente definido como um componente integral do Windows responsável por fornecer os serviços necessários, para construção e carregamento de aplicações para Windows e Web.

    O . NET Framework utiliza o CLR (Common Language Run Time) sendo uma base para o .NET Framework, disponibilizando:

    • Interoperabilidade de linguagem;
    • Suporte de versões aprimorado;
    • Segurança aprimorada;
    • Garbage Colection.



    Também utiliza o Framework Class Library (Biblioteca de Classes) e tem como agente um serviço de Run Time que gerencia o código durante a execução do aplicativo.

    Definição de variáveis

    Veremos aqui os tipos de variáveis mais utilizadas no desenvolvimento de softwares. Variáveis são definidas como locais de armazenamento temporário de diferentes tipos como: números, palavras, datas e outros, que podem receber resultados de cálculos ou entrada de dados pelo usuário.

    As variáveis devem receber um nome único (dentro de um escopo), para que seja usado como referência ao decorrer do desenvolvimento e deve ter um nome curto e de fácil memorização, não sendo recomendado utilizar variáveis com o mesmo nome diferenciando-as somente por maiúsculas e minúsculas.

    Exemplo:
    nomecliente
    nomeCliente

        
    Isso pode causar confusão para o desenvolvedor, ou seja, usualmente as variáveis são escritas com a primeira letra minúscula e se tiver mais de uma palavra a segunda palavra com a primeira letra maiúscula.

    Exemplo:
    nomeCliente
    sobrenomeCliente
    idadeCliente

        
    Outra prática muito utilizada hoje pelas empresas para um melhor entendimento das variáveis e também para facilitar a manutenção do seu código é no início de cada variável inserir letras minúsculas indicando o tipo da variável que você declarou no inicio do código.

    Exemplo:
    strNomeCliente (variável do tipo string)
    intIdadeCliente (variável do tipo int)

        
    Veja abaixo as variáveis mais utilizadas no desenvolvimento de softwares em C#:

    Descrição dos tipos de dados:
    int = Números inteiros (32 bits por padrão)
    long = Números inteiros (64 bits por padrão)
    float = Números de ponto flutuante (32 bits por padrão)
    double = Números de ponto flutuante (63 bits por padrão)
    decimal = Valores monetários (128 bits por padrão)
    string = Para seqüências de caracteres (16 bits por caractere)
    char = Para somente um caractere (16 bits)
    bool = Valor booleano que pode ser (true) ou (false)

    Para atribuição de valores as variáveis citadas acima você deve utilizar o sinal de (=) que se trata de um operador lógico que veremos nas próximas aulas.

    Exemplos de uso das variáveis:
    int intIdade = 10;
    bool booFumante = false;
    decimal decPagamento = 1000;
    double dblComissão = 1.27;
    char chrSexo = M;
    string strNome = "Einstein";

        
    Ao término da declaração de cada variável deve-se usar (;) para que o Visual Studio entenda que ali se encerra a declaração da variável.

    Conclusão

    Este é o primeiro de uma série de artigos para iniciantes da linguagem C# deixando aberto a idéias e dúvidas através do e-mail: carlos.andrade@fcamara.com.br.
    No próximo artigo iremos aprender sobre operadores lógicos e sua utilização.
    Criado por: Carlos Andrade
    REF:http://www.oficinadanet.com.br

    Veja parte 2 em Curso Básico de C# - Parte 2 - Operadores



    Componente Login do Visual Studio com Firebird

    clock April 4, 2009 09:32 by author Anderson

    Duas classes são nescessarias:

    FirebirdSql.Web.Providers.FbMembershipProvider e FirebirdSql.Web.Providers.FbProfileProvider

    quem estarão presentes na biblioteca do firebird.

    Depois será nescessário ter a estrutura do banco de dados:

    Baixe aqui o Script script.sql (50,91 kb)

    Configure o Web.Config para receber a nova estrutura:

    ...
    <membership defaultProvider="FireBirdMembershipProvider">

        <providers>

            <clear/>

            <add name="FireBirdMembershipProvider" connectionStringName="AspNetSecurity" applicationName="/" type="FirebirdSql.Web.Providers.FbMembershipProvider" passwordFormat="Clear"/>


        </providers>


    </membership>


    <profile defaultProvider="FireBirdProfileProvider" enabled="true">

        <properties>

            <add name="Age" type="Int32"/>

            <add name="Country" type="String"/>

        </properties>

        <providers>

            <clear/>

            <add name="FireBirdProfileProvider" connectionStringName="AspNetSecurity" applicationName="/" type="FirebirdSql.Web.Providers.FbProfileProvider"/>

        </providers>

    </profile>

    <roleManager defaultProvider="FireBirdRoleProvider" enabled="true">

        <providers>

            <clear/>

            <add name="FireBirdRoleProvider" connectionStringName="AspNetSecurity" applicationName="/" type="FirebirdSql.Web.Providers.FbRoleProvider"/>

        </providers>

    </roleManager> 

    ...
    Acho que é isso pessoal, qualquer dúvida deixe uma mensagem ai que respondo.



    Plugin Suporte Struts 2 para NetBeans IDE - Support for Struts 2 in NetBeans IDE

    clock April 3, 2009 21:13 by author Anderson

    Plugins Netbeans para suporte ao Framework Struts 2

    Support for Struts 2 in NetBeans IDE

    NetBeans Logo Struts2 Logo

    The main goal of this project is create support for Struts2 in NetBeans IDE.

    Releases

    05/20/2007 - There is a list of possible features. Please comment, suggest new features in the forum.

    02/07/2007 - The initial source code is available now. There is not a binary distro yet. The functionality is limited and basically you can only extend a new web project with the library and setup for Struts 2 framework.

    03/28/2008 - A binary distro is now available for testing. Installation instructions for the same can be found here. Please note that this is not an official release and should only be used by people interested in testing the module before it is released.

    06/23/2008 - The plugin for supporting Struts2 in NetBeans 6.1  is released. And the binary distro is available over here. The feature list is available over here.



    Retirado do Site do Projeto:
    https://nbstruts2support.dev.java.net/

     

     



    Compartilhe aqui!

    .

    Anderson Damasio

    Desenvolvedor Java e .Net C# atuando na área desde 2004.

    Tags para Pesquisa

    Seja um membro

    Sign in