Pular para o conteúdo principal

Postagens

Mostrando postagens de 2011

Projeto de sistemas distribuídos usando CORBA, parte IV: Final tudo funcionando

Antes de testar a aplicação temos que colocar o servidor de nomes no ar , para isso você abre um terminal de comando e digita "tnameserv -ORBInitialPort 1050 ", veja a porta 1050 foi escolhida por mim por que a porta default do Corba já estava sendo utilizada na minha maquina . Vai aparecer uma tela mais ou menos assim para você no terminal Isso indica que o servidor de nomes está ativo , somente ai você vai poder testar o programa. Outra coisa importante , temos que ter 3 copias dos códigos para que possa funcionar , note que apesar das 3 copias estarem na mesma maquina elas representam 3 programas diferentes que poderiam estar rodando em maquinas completamente diferentes , a estrutura de diretório no meu netbeans ficou assim: São 3 projetos cada um tem um numero identificando que estação representa , conforme expliquei para vocês não vou explicar como fazer a interface gráfica da aplicação , mas digo que foi feita inteiramente em swing usando o matisse no ...

Projeto de sistemas distribuídos usando CORBA, parte III : Classe relógio , Classe Servidor e Classe Servant

Vou iniciar o post pedindo desculpas por ter demorado a concluir essa serie de post sobre sistemas distribuídos com CORBA , as disciplinas no doutorado apertaram aqui no DAS e tive que me afastar do blog por um tempo :-) . Para quem chegou agora , esse post é precedido de 2 posts anteriores de um trabalho da disciplina de sistemas distribuídos , projeto esse feito no 2º trimestre de 2011, confira abaixo os 2 posts anteriores: Projeto de sistemas distribuídos usando CORBA, parte I : O projeto Projeto de sistemas distribuídos usando CORBA, parte II : Primeiros passos Para finalizar essa serie de artigos vamos comentar o funcionamento das seguintes classes: - Classe relógio , que controla a evolução do relógio lógico de lamport . -Classe servidor de mensagem , que conforme o próprio nome diz é responsável por implementar o servidor de mensagens - Classe mensagemServant que é o código que utiliza o corba para responder aos requisitos advindos do servidor.

Seminario sobre web semântica e ontologias

Apresentação que fizemos sobre o tema de web semântica e ontologias na disciplina de Inteligência Artificial aplicada a processos de automação e sistemas no PPGEAS - UFSC . A apresentação ficou  grande mas é por que o assunto é muito extenso mesmo :-). Por favor não deixe de comentar o post.   Introdução a Web Semântica

Web services

Nossa  apresentação sobre Web Services. Para quem programa em java é um tópico bem interessante , outra tecnologia que torna os serviços de software muito mais dinâmicos.  Esse seminario foi apresentado na disciplina de sistemas distribuídos no DAS - UFSC  Enjoy e não esqueça de comentar ... Web Services

Projeto de sistemas distribuídos usando CORBA, parte II : Primeiros passos

1. Um pouco mais sobre o CORBA O padrão CORBA é um framework que permite que aplicações distribuídas em uma rede (local ou mesmo na internet) comuniquem-se entre si e troquem informações. Estas aplicações podem estar sendo executadas em diferentes plataformas (Intel, Sun, etc) e sistemas operacionais (Windows, Linux, Unix, etc) e podem ter  sido construídas em diferentes linguagens de programação.  Utilizando o padrão CORBA é possível ter aplicações completamente distribuídas, potencialmente com cada pedaço de software sendo executado em qualquer parte da rede e em qualquer plataforma, sem que o usuário perceba que isto está acontecendo e sem que o desenvolvedor precise se preocupar em criar soluções que resolvam os problemas de interoperabilidade entre os diferentes pedaços da aplicação. Atualmente, diversas ferramentas já suportam o padrão CORBA, como Delphi 4, JBuilder 2, Oracle 8i, Cold Fusion e C++ Builder. Uma grande vantagem de CORBA é ser um padrão diretamente s...

Projeto de sistemas distribuídos usando CORBA, parte I : O projeto

Na disciplina de Sistemas distribuídos (2º Trimestre -PPGEAS- UFSC - 2011) , tive que fazer um projeto em CORBA para 3 estações , a idéia era termos 3 estações funcionando em maquinas diferentes enviando mensagens uma para as outras, além disso utilizaríamos o conceito de relógios escalares de Lamport para poder ordenar os eventos e mensagens para cumprir a ordem total na entrega das mensagens na camada de aplicação , vou criar uma serie de posta explicando como fizemos o projeto e as dificuldades e detalhes da implementação. Em tempo , foi por isso que passei um bom tempo sem publicar nada , a disciplina de sistemas distribuídos  e muito extensa e por isso tive que me dedicar e fiquei sem tempo para o blog Vamos começar com uma explicação simples sobre o CORBA, segundo a wikipedia : "CORBA (abreviado de Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distri...

Sistemas distribuídos: Introdução ao JAVA RMI

O bjetos remotos são objetos cujos métodos podem ser chamados remotamente, como se fossem locais. O Cliente precisa, de alguma forma, localizar e obter uma instância do objeto remoto . Depois que o cliente tem a referência, faz chamadas nos métodos do objeto remoto usando a mesma sintaxe que usaria se o objeto fosse local. Objetos remotos abstraem toda a complexidade da comunicação em rede.

Sistemas distribuidos: Enviando mensagens TCP Parte II - Servidor

Igual ao servidor UDP esse servidor só vai receber a mensagem e envia-la de volta , ou seja é um servidor de ECO mas com boa vontade basta fazer algumas alterações que vc tem um servidor de chat :-) . Server TCP: import java.net.*; import java.io.*; public class TCPServer { public static void main(String[] args) { try { int serverPort = 7896; ServerSocket listenSocket = new ServerSocket(serverPort); //socket de escuta o socket que vai atender as requisições while(true){ Socket client = listenSocket.accept( ); Connection c = new Connection(client); //precisamos criar a classe conection que vai //inicializar nossas threads para atender a cada requisição } } catch (IOException e) { System.out.println("Listem :" + e.getMessage( )); } }//fim do main }//fim da classe Depois de fin...

Sistemas distribuidos: Enviando mensagens TCP Parte I - Cliente

Aproveitando que estou fazendo a disciplina de  sistemas distribuídos no Doutorado continuo minha serie de posts sobre o assunto , dessa vez vamos conectar dois sistemas usando TCP , abaixo segue o codigo do cliente implementado e testado , lembre que para passar os dois argumentos para testar o cliente você precisa seguir as mesmas instruções de configuração que foram passadas no meu post sobre envio de mensagens UDP , veja o post antigo aqui . Código do cliente: import java.net.*; import java.io.*; public class TCPCliente { public static void main(String[] args) { //argumentos fornecem a mensagem e o nome de host do destino //argumento 0 é a mensagem , o 1 é o ip de destino do servidor Socket s = null; try{ int serverPort = 7896 ; // porta do servidor s= new Socket(args[1], serverPort); // ip e porta do servidor DataInputStream in = new DataInputStream(s.getInputStream( ) ); ...

Origen do termo Foobar

Foo é um termo genérico amplamente usado para aludir a qualquer entidade informática cujo nome se ignora ou não se quer expressar. Por si mesma a palavra foo não tem um significado preciso, somente é uma representação lógica no sentido em que as letras x e y se usam em álgebra para representar um número desconhecido.Foobar têm sido usados ​​para nomear as entidades, tais como variáveis ​​, funções , e comandos , cujo propósito não é importante e serve apenas para demonstrar um conceito. As próprias palavras não têm significado neste uso Foobar é por vezes utilizado sozinho. Foo, bar e baz  são por vezes utilizados nessa ordem, quando várias entidades são necessários. O uso em programação geralmente em exemplos e pseudocódigo varia; em certos círculos, é usado extensivamente, mas muitos preferem nomes descritivos, enquanto outros preferem usar letras isoladas A palavra foo aparece no idioma inglês como um neologismo dada a sua popularidade em descrever conceitos nas ciências ...

Como enviar mensagem via UDP em JAVA - PARTE II - Server

Continuando o post anterior agora vamos ver a implementação do servidor UDP em Java: Server de mensagem UDP import java.net.*; import java.io.*; public class UDPServer { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here try { //criacao do socket UDP datagrama //6789 é o valor da porta a ser usada pelo servidor DatagramSocket aSocket = new DatagramSocket(6789); //tamanho do buffer de recebimento de mensagem byte[] buffer = new byte[1000]; //loop infinito while (true) { //criacao do pacote DatagramPacket request = new DatagramPacket(buffer, buffer.length); //receive bloqueante , o programa fica parado aqui até receber um pacote aSocket.receive(request); // preparar pacote para envio de resposta nada ...

Como enviar mensagem via UDP em JAVA - PARTE I - Client

Esse artigo é legal para quem pretende usar sockets UDP em aplicações Java , a partir desse código dá para desenrolar em outras aplicações mais interessantes. código cliente import java.io.*; import java.net.*; public class UDPClient { public static void main(String[] args) { try { // Criação de sockets UDP - Datagramas DatagramSocket aSocket = new DatagramSocket( ); //mensagem é o primeiro argumento do executavel //tem que ser enviado em bytes byte[ ] m = args[0].getBytes(); //descobre o nome do endereço a partir do ip InetAddress aHost = InetAddress.getByName(args[1]); //imprime o nome relativo ao IP System.out.println("Host :" + aHost.getHostName( ) ); //porta do servidor int serverPort = 6789; //montagem do pacote a ser enviado DatagramPacket request = new DatagramP...

Livro do Google que explica a web está disponível em português

Livro online explica em linguagem simples noções básicas da web O Google anunciou nesta quinta-feira que o livro online 20 coisas que eu aprendi sobre navegadores e a internet está disponível em mais 15 idiomas, entre eles o português. O livro, lançado no ano passado em inglês, explica em linguagem descomplicada, tecnologias básicas da web. Com ilustrações e linguagem simples, o livro explica princípios básicos da web, como HTML5, plug-ins, cookies e como manter a segurança dos dados na internet. O design e a navegação são iguais ao de um livro, com capa, índice e animações para virar a página, e o livro é ilustrado por Cristoph Niemann. O projeto recebeu uma menção honrosa no Webby Awards em três categorias. A página foi totalmente desenvolvida em HTML5. Quem não sabe o que é HTML5 pode buscar as explicações no livro online, pelo endereço www.20thingsilearned.com/pt-BR .

Usando o dialogo JFileChooser para abertura de arquivo

Vamos usar o post passado ( escrita de arquivos txt ) para ler os dados de um arquivo txt qualquer dentro da aplicação, para isso vamos colocar um botão adicional ler na aplicação. Na classe de salvar implementamos um método para ler um arquivo txt o único inconveniente é que o método vai guardar o resultado em um vetor de caracteres ( ligeiramente diferente de um string ) depois teremos o trabalho de transformar o vetor em uma String. import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author JoaoSantanna */ public class SalvarTexto { public void salvarDados(String txt) throws IOException { ... // veja codigo no exemplo passado public char[] lerDados(File arquivo) { char[] texto = new char[500]; try { BufferedReader br = new BufferedReader(new FileReader(arquivo)); br.read(texto); return texto; } catch (FileNotFoundException ex) { Logger.getLogger(Salva...

Escrever em arquivo texto

Para esse post vamos utilizar uma iterface swing bem simples para ilustrar . Nesse exemplo ao clicar no botão salvar o texto da JTextArea é salvo em um arquivo txt, veja a classe de salvamento de arquivo e o código que permite isso abaixo: import java.io.*; /** * * @author JoaoSantanna */ public class SalvarTexto { public void salvarDados(String txt) throws IOException { try { File f = new File("Arquivo.txt"); BufferedWriter wr = new BufferedWriter( new FileWriter(f) ); wr.write(txt); wr.close( ); } catch (IOException ex) { ex.printStackTrace(); } } } Depois disso basta adicionar um objeto Salvar texto e chama-lo no evento de apertar o botão , veja os pedaços de código abaixo:

Serialização de objetos II - Lendo Objetos de Arquivos

Recuperando seus objetos diretamente de arquivos Vamos utilizar o post anterior ( Serialização I: salvando Objetos em arquivos ) para mostrar o caminho de volta , como pegamos os arquivos e recuperamos os objetos serializados armazenados neles. Vamos pegar a Classe auxiliar armazenamento e implementar o metodo CarregarDados , veja abaixo como fica a classe Classe Armazenamento import java.util.ArrayList; import java.io.*; /** * * @author JoaoSantanna */ public class Armazenamento { public Object carregarDados() { Object resultado = null; try { //tem que ser o mesmo nome do arquivo de salvamento FileInputStream fs = new FileInputStream("dadosApp.arq"); ObjectInputStream os = new ObjectInputStream(fs); resultado = os.readObject( ); return resultado; } catch (Exception ex) { return null; } } public int salvarDados(ArrayList dados) { try {....

Serialização de objetos I - Salvando objetos em arquivos

Serialização: como salvar seus objetos Java par utilizar quando precisar  Serialização de objetos é a possibilidade de salvar uma cópia completa de um objeto ou de uma coleção de objetos em um fluxo de saída (arquivo externo), de modo que o objeto pode ser recriado a partir da cópia serializada  quando necessário . A serialização de objetos Java,  fornece um recurso para transformar um grupo ou um único objeto em um fluxo de bits, ou um array de bytes para armazenar ou enviar pela rede,  de modo que o  referido fluxo de bits ou uma matriz de bytes pode ser transformado novamente em objetos Java. O processo de serialização também é conhecido como marshaling de um objeto, e de-serialização é conhecido como un-marshaling. Assim a serialização oferece os seguintes benefícios: Um sistema para persistência de objetos, ou seja, escrever as suas propriedades em arquivos externos ou discos, ou salvá-las em um banco de dados. Um sistema para chamadas d...

Manipulando Datas

Código simples para manipular datas no java import java.util.Calendar; import java.util.TimeZone; /** * * @author JoaoSantanna */ public class TesteData { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Calendar hoje = Calendar.getInstance(); TimeZone tz = TimeZone.getTimeZone("America/sao_Paulo"); hoje.setTimeZone(tz); System.out.println("Hora Atual :"+ hoje.get(hoje.HOUR) + ":" + hoje.get(hoje.MINUTE) ); System.out.println("Mes:" + hoje.get(hoje.MONTH) ); } }

10 razões para parar de trabalhar com TI

Fonte: http://www.oficinadanet.com.br/artigo/carreira/10-razoes-para-parar-de-trabalhar-com-ti Levante a mão se você quase largou seu emprego em pelo menos algumas ocasiões. Vá em frente. Não seja tímido. Todos nós sabemos que TI é uma das carreiras mais estressantes que você pode escolher. E, infelizmente, as universidades não ensinam os mecanismos de enfrentamento para lidar com dias/semanas/meses que podem se transformar em longos anos. 1: Estresse Nunca deixe ninguém diga que uma carreira em TI é fácil. É rara uma ocasião em que alguém tenha um emprego na área de TI e não haja estresse. Lembre-se: TI é gerenciamento de desastres. Quando um cliente ou usuário liga para você, quase sempre é uma emergência que deve ser imediatamente solucionada. E, quando você está trabalhando nessa área, é melhor ficar tudo certo, pois uma falha pode custar-lhe um contrato ou o emprego. O que torna isto pior é o fato de que o estresse raramente diminui. A cada minuto do dia você estará trabal...

10 Requisitos para se tornar um excelente programador Java

Achei essas ideias muito interessantes e resolvi postar por aqui , a fonte original vem de um programador da India ( K. SIVA PRASAD REDDY) mas acho que fez tanto sucesso que acabou sendo postada no portal DZone e no Jornal Java . 10 Requisitos para se tornar um excelente programador Java 1. Conhecer a base e os principios OO. Sem conhecer estes princípios é praticamente impossível fazer bom uso da orientação a objetos em uma linguagem como o Java. O que muitas vezes acontece é o desenvolvedor utilizar Orientação a Objetos só por utilizar e ter um código tão monolítico quanto uma programação procedural. Já cansei de ouvir pessoas falando que nunca precisariam utilizar Herança, ou polimorfismo, porém, tenham certeza, se vocês conhecerem e entenderem, irão sentir necessidade de utilizar. Devemos saber acima de tudo como aplicar esses princípios OO e projetar uma solução de forma OO. Assim, deve-se ter um forte conhecimento em modelagem de objetos, herança, polimorfismo, Design Patte...

Configurar o apache Tomcat no Mac Os X

O tomcat é servlet container muito utilizado para programação java na web, veja a seguir alguns passos básicos para instalar esse servidor no Mac OS X: 1. Download do Tomcat (http://tomcat.apache.org/index.html) 2. Descompactar o ficheiro (unzip ou tar zxvf) para uma directoria (exemplo: /Users/utilizador/Library/apache-tomcat-x.x.x) 3. Acrescentar no ficheiro /Users/utilizador/.profile a seguinte linha: export CATALINA_HOME=/Users/utilizador/Library/apache-tomcat-x.x.x 4. Dar permissõoes de execução aos shell scripts: chmod +x /Users/utilizador/Library/apache-tomcat-x.x.x/bin/*.sh 5. E já está, é só iniciar o servidor: /Users/utilizador/Library/apache-tomcat-x.x.x/bin/startup.sh abrar seu navegador e veja se o tomcat está ativo no endereço http://localhost:8080/

Usando a API JExcel Parte 2 - Acessando e imprimindo dados de uma planilha

Depois de uma longa parada por causa dos projetos do doutorado segue a segunda parte do tutorial de uso do JExcel . Para importar dados de uma planilha primeiro vamos declarar todos os imports necessários para a aplicação funcionar, basta colocar os imports listados abaixo. import java.io.File; import javax.swing.JFileChooser; import jxl.*; O io.File é necessário pois iremos fazer uma operação de abertura de arquivo, nesse exemplo utilizei o JFileChooser que é um componente swing de dialogo de abertura de arquivo, com isso posso escolher o arquivo excel que quero abrir. Finalmente o jxl.* é utilizado para importar a biblioteca do JExcel. Para cumprir os propósitos desse tutorial criei uma classe chamada Leitor, essa classe(como o próprio nome sugere) teria a função de ler os dados das planilhas. Dentro dessa classe declarei dois objetos definidos na API que são uma Workbook e uma Sheet, o Workbook tem os metodos para abertura do arquivo no formato excel ja o objeto sheet serve pa...

SyntaxHighlighter para o seu blog

Essa dica é para quem quer usar uma ferramenta de formatação de codigo para blogs, o SyntaxHighlighter  é uma ferramenta desenvolvida em JavaScript que cria caixas de texto para códigos-fonte de programas, numeração de linha e coloracção (highlight) de código. É muito util em blogs de programação.Com o SyntaxHighlighter pode-se visualizar diversas linguagens, dentre elas Bash (Shell Script), C#, C, C++, CSS, Delphi, JavaScript, Java, Perl, PHP, Python, Ruby, SQL e XML, cada um com seu sistema de coloração específico. O tutorial completo eu achei no blog Explicação da Net  . Veja abaixo um comparativo , primeiro o código sem utilizar o SyntaxHighlighter e depois utilizando o SyntaxHighlighter e tire suas conclusões.

Previsões open source para 2011

Além do Android, outras aplicações de código aberto, como Ubuntu e LibreOffice, devem crescer e conquistar grande público no próximo ano. As previsões para o próximo ano costumam ser as mais positivas, principalmente, durante o mês de dezembro - período de 13.º salário, Natal e ano novo. E as previsões para o Linux e demais softwares de código aberto não são exceção. Ainda que para alguns o setor de tecnologia seja quase "imprevisível", vale compartilhar alguns pensamentos sobre o que 2011 reserva para as aplicações open source.