Artigos com o marcador Windows
Configurando ambiente de desenvolvimento C++ no Windows com Eclipse e MinGW
11/05/09
O Eclipse é uma das melhores IDEs de desenvolvimento Java no mercado. O que pouca gente sabe, é que ela também pode ser usada para desenvolvimento de aplicações utilizando o C++. Nesse pequeno tutorial, mostrarei como instalar o compilador C++ para Windows (MinGW) e utilizar o Eclipse para trabalhar com esse compilador.
O compilador MinGW (Minimalist GNU for Windows) é uma versão portada para Microsoft Windows do conjunto de ferramentas GNU. Este software inclui um conjunto de arquivos cabeçalho para a API do Windows que permite aos desenvolvedores usar o GCC para criar programas nativos em Windows sem precisar contar com uma emulação em tempo real de um sistema Unix-like.
Ambiente usado nesse tutorial:
- Windows XP SP2
- Eclipse 3.4 – Ganymede C++
O primeiro passo é baixar o Eclipse para C++. Para isso, vá ao site oficial do Eclipse (http://www.eclipse.org), clique em “Download Eclipse” e baixe a última versão do “Eclipse IDE for C/C++ Developers“. O Eclipse vem em uma pacote ZIP (quando Windows) com aproximadamento 68MB. Feito o download do Eclipse, descompacte o arquivo ZIP. Agora vamos ao próximo passo.
Nesse segundo passo, vamos baixar o MinGW, que é o compilador que utilizaremos. Acessem o site do MinGW (http://www.mingw.org), vá em “Downloads” e baixe a última versão do “Automated MinGW Installer“. Enquanto esse artigo esta sendo escrito, a última versão é a MinGW 5.1.4 de 26/04/2008. O arquivo é pequeno porque toda a instalação será feita online. Ele baixará todos os arquivos necessários na hora da instalação.
Existe alguns detalhes para se instalar o MinGW. Duplo clique no instalador e vamos começar a instalação. Você deverá estar conectado a Internet para instalar o MinGW com sucesso. Na primeira tela, clique em “Next“. Na segunda, marque a opção “Download and install“, igual na figura abaixo.
Depois clique em “I Agree” para aceitar a licensa GPL e na tela de escolha de pacote (Choose Package), marque a opção “Current“, para instalar a versão estável atual do MinGW.
- Previous: Versão estável anterior;
- Current: Versão atual estável;
- Candidate: Versão futura porém instável;
Na escolha de componentes (Choose Components), você deverá obrigatoriamente marcar as opções:
- MinGW base tools;
- g++ compiler
As outras opções (g77 compiler, Ada compiler…) são opcionais. Elas não são necessárias para o que pretendemos fazer com esse tutotial. Instale se você quiser.
Clique em “Next” e escolha o diretório de instalação. O diretório padrão e recomendado é o “C:\MinGW“. Avance mais uma vez e o instalador irá começar a fazer o download dos componentes e a instalação dos mesmos.
Após terminar, finalize o instalador e abra o Eclipse (que você descompactou no primeiro passo). Para rodar o Eclipse você irá precisar da JRE instalada. Caso você não tenha a JRE, basta fazer o download aqui: http://java.sun.com/javase/downloads/index.jsp. Selecione a opção: “Java SE Runtime Environment (JRE)“.
Com o Eclipse aberto, teremos a seguinte tela:
Até aí tudo certo? Agora vamos criar o nosso projetinho C++ de exemplo para ver se está tudo OK e se a compilação está funcionando. Para criar o projeto faça: “File > New > C++ Project“. Digite um nome para seu projeto e escolha a opção “Hello World C++ Project“. Verifique se o MinGW aparece no Toolchains. Abaixo segue uma figura para você ter uma referência:
Agora clique em “Finish” e vamos testar. O projeto será criado e você pode fechar essa tela de “Welcome” que aparece quando se inicia o Eclipse. Repare que o projeto criado está no lado esquerdo do Eclipse. Essa janela onde fica os projetos é chamada de “Project Explorer“. Expanda seu projeto, vá na pasta src e duplo clique no arquivo “Teste.cpp“. Você terá um código igual ao abaixo:
//============================================================================ // Name : Teste.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> using namespace std; int main() { cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! return 0; }
Abaixo segue uma screenshot do Eclipse para você ter uma referência de como estarão as coisas nesse momento.
Agora vamos rodar o projeto. Para compilar e rodar esse projeto, clique no “Play” na barra de ferramentas lá em cima no Eclipse. Se tudo der certo, no console dele irá aparecer “!!!Hello World!!!“. Se aparecer, quer dizer que deu tudo certo e seu Eclipse está prontinho para ser usado como uma IDE de desenvovlimento C++.
Existem muitos livros e muitos tutoriais na Internet sobre C++. De uma pesquisada no Google sobre o assunto e você verá quanta informação você achará. Até a próxima e bons estudos.
Fontes:
Explicação sobre o MinGW: http://pt.wikipedia.org/wiki/MinGW
Microsoft DreamSpark disponível para estudantes brasileiros
07/01/09
A Microsoft disponibilizou no Brasil o DreamSpark. Mas o que é o Microsoft DreamSpark? É um incentivo da Microsoft aos estudantes a qual a empresa oferece diversos softwares gratuitamente para serem usados por esses estudantes. No site do DreamSpark:
Microsoft DreamSpark faz com que estudantes possam fazer o download de ferramentas de desenvolvimento e design da Microsoft gratuitamente.
Para o download das aplicações, os estudantes deverão comprovar que são estudantes e a cada 12 meses deverão renovar essa comprovação para continuar a utilizando os produtos originais da Microsoft gratuitamente. Os produtos também não são trial 30 dias. São full version mesmo.
Os softwares disponibilizados são em sua maioria ferramentas de desenvolvimento, assim favorecendo mais os estudantes de informática. A lista de softwares disponíveis:
- Visual Studio 2008 Professional Edition
- Visual Studio 2005 Professional Edition
- Expression Studio 2 (includes Web, Blend, Media e Design)
- SQL Server 2008 Developer Edition
- Windows Server 2008 Standard Edition
- IT Academy Student Pass
- Robotics Developers Studio 2008
Além desses softwares a Microsoft já disponibiliza gratuitamente para todos e não só estudantes as seguintes ferramentas:
- SQL Server 2008 Express Edition
- Visual Studio 2008 Express Edition
- XNA Game Studio 2.0 (com adesão a 12 meses de teste como membro do Creators Club)
- Virtual PC 2007
Mais informações vocês podem obter no site oficial do Microsoft DreamSpark.
Serialização de objeto no Java
03/12/08
Quando estamos fazendo qualquer atividade no computador como um documento de texto, jogando um game ou até mesmo declarando o imposto de renda é quase que imperceptivel para nós a capacidade desses aplicativos salvarem informações no computador para que no futuro possamos continuar o trabalho de onde paramos. Mas o que isso tem haver com serialização de objetos no Java?
Bem, quando estamos codificando em Java, nossa aplicação também poderá salvar e recuperar informações no computador. Essas informações salvas, são salvas como objetos e essas mesmas informações salvas podem ser recuperadas para uso posterior pelo nosso programa.
Basicamente a serialização de objetos nos permite salvar em arquivo objetos para que no futuro nossa aplicação recupere esse objeto a partir do arquivo ou até mesmo uma outra aplicação poderá recuperar tal objeto. Diversas linguagens trabalham com serialização de objetos. Em um post futuro, tentarei explicar como funciona a serialização de objetos no Ruby.
A serialização de objetos no Java é simples e utiliza uma interface de marcação que é a java.io.Serializable. Essa interface não possui nenhum método. Ela só serve para marcar a classe que poderá ser serializada. Quando Java internamente olhar para essa classe e ver que ela implementa a java.io.Serializable, ele saberá que essa classe é certa para a serialização.
A serialização é boa para alguns casos e ruins para outros. Em classes onde há senhas, dados confidenciais ou qualquer tipo de informação que deva ser protegida a serialização pode ser perigosa pois ela “externa” essas informações. Portanto deverá haver muito cuidado na hora de se decidir o que deve ser serializado ou não.
Nesse post mostrarei de forma bem simples e organizada como serializar o objeto para arquivo, recuperar esse objeto e exibir em console os atributos do objeto que salvamos.
Primeiramente vamos criar um objeto que iremos salvar. Eu criei uma JavaBean que representa um carro.
package com.meupost.beans; import java.io.Serializable; public class Carro implements Serializable { private String cor; private String nome; private String marca; private float valor; public String getCor() { return cor; } public void setCor(String cor) { this.cor = cor; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getMarca() { return marca; } public void setMarca(String marca) { this.marca = marca; } public float getValor() { return valor; } public void setValor(float valor) { this.valor = valor; } }
Feita a nossa classe que irá ser serializada, iremos criar outra classe que será responsável por serializar o objeto da classe acima. Essa classe que iremos criar agora é a classe fundamental na serialização de objetos no Java. Vejam:
package com.meupost.serial; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Serializar { /** * Esse método recebe um objeto arquivo e o objeto que será serializado. * O método irá serializar o objeto passado no arquivo (referenciado pelo objeto file). */ public static void salvarObjeto(File file, Object objeto) throws FileNotFoundException, IOException { if (objeto == null) { throw new NullPointerException("Objeto passado é nulo"); } FileOutputStream fileOut = null; ObjectOutputStream objOut = null; try { fileOut = new FileOutputStream(file); objOut = new ObjectOutputStream(fileOut); objOut.writeObject(objeto); } catch (FileNotFoundException e) { throw new FileNotFoundException("O arquivo não pode ser encontrado"); } catch (IOException e) { throw new IOException("Erro de entrada e saída"); } finally { if (fileOut != null) { fileOut.close(); } if (objOut != null) { objOut.close(); } } } /** * Para ler o objeto serializado, nós somente precisamos no arquivo onde * esse objeto está salvado. * Sabendo o arquivo, nós conseguimos recuperar o objeto tranquilamente. */ public static Object recuperarObjeto(File file) throws FileNotFoundException, IOException, ClassNotFoundException { Object obj = null; if (file == null) { throw new NullPointerException("Objeto FILE é Nulo."); } FileInputStream fileIn = null; ObjectInputStream objIn = null; try { fileIn = new FileInputStream(file); objIn = new ObjectInputStream(fileIn); obj = objIn.readObject(); } catch (FileNotFoundException e) { throw new FileNotFoundException("Arquivo não encontrado"); } catch (IOException e) { throw new IOException("Erro de entrada e saída"); } catch (ClassNotFoundException e) { throw new ClassNotFoundException("Erro ao recuperar objeto do arquivo"); } finally { if (fileIn != null) { fileIn.close(); } if (objIn != null) { objIn.close(); } } return obj; } }
Com essa classe pronta, nós estamos apto a serializar o nosso objeto. Assim, vamos criar a classe Main para que nós possamos testar se nossa serialização irá funcionar o não. Na classe Main nós iremos instanciar alguns objetos Carro, colocaremos esses objetos em uma List e salvaremos essa List usando a nossa classe Serializar.
Depois de serializado, nós iremos recuperar essa List e iremos iremos percorrer essa lista mostrando os objetos que foram salvo. Eu criei um método que preenche a lista com objetos carro para ficar mais organizado.
package com.meupost.main; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.meupost.beans.Carro; import com.meupost.serial.Serializar; public class Main { /** * Na classe Main iremos testar nossa serialização. Vamos serializar uma lista * de objetos Carro. */ public static void main(String[] args) { String path = "C:\Documents and Settings\ricardo\Desktop\objeto.ser"; File file = new File(path); try { List<Carro> lstCarros = preencherLista(); Serializar.salvarObjeto(file, lstCarros); System.out.println("Objetos salvos com Sucesso!"); List<Carro> novaLista = (List) Serializar.recuperarObjeto(file); System.out.println("Objetos Recuperados com sucesso"); Iterator<Carro> it = novaLista.iterator(); while (it.hasNext()) { Carro car = (Carro) it.next(); System.out.println("Nome: " + car.getNome()); System.out.println("Marca: " + car.getMarca()); System.out.println("Cor: " + car.getCor()); System.out.println("Valor: " + car.getValor()); System.out.println("=================================="); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } /** * Cria e seta nosso objeto carro. Colocaremos esse objeto em uma lista. Tal lista, * contendo os objetos carro, irá ser serializada. */ public static List<Carro> preencherLista() { List<Carro> listaCarros = null; Carro carro1 = new Carro(); carro1.setCor("Preto"); carro1.setMarca("Ford"); carro1.setNome("F-250"); carro1.setValor(80000.50F); Carro carro2 = new Carro(); carro2.setCor("Prata"); carro2.setMarca("Chevrolet"); carro2.setNome("Celta"); carro2.setValor(26451.44F); Carro carro3 = new Carro(); carro3.setCor("Vermelho"); carro3.setMarca("Chevrolet"); carro3.setNome("Corsa"); carro3.setValor(38478.40F); Carro carro4 = new Carro(); carro4.setCor("Amarelo"); carro4.setMarca("Volkswagen"); carro4.setNome("Fusca"); carro4.setValor(2411.14F); listaCarros = new ArrayList<Carro>(); listaCarros.add(carro1); listaCarros.add(carro2); listaCarros.add(carro3); listaCarros.add(carro4); return listaCarros; } }
Feita a classe Main e verificado que não há nenhum erro de compilação, nós podemos executar nosso pequeno programa. Executando da forma que está postada aqui, a saída para console ficará assim:
Objetos salvos com Sucesso! Objetos Recuperados com sucesso Nome: F-250 Marca: Ford Cor: Preto Valor: 80000.5 ======================================= Nome: Celta Marca: Chevrolet Cor: Prata Valor: 26451.44 ======================================= Nome: Corsa Marca: Chevrolet Cor: Vermelho Valor: 38478.4 ======================================= Nome: Fusca Marca: Volkswagen Cor: Amarelo Valor: 2411.14 =======================================
E isso pessoal, espero que tenha sido útil o tutorial e que tenham gostado. Se quiserem saber mais sobre serialização de objetos utilizando o Java, você pode achar nesses links:
- http://en.wikipedia.org/wiki/Serialization#Java
- http://java.sun.com/developer/technicalArticles/Programming/serialization/
- http://www.deitel.com/articles/java_tutorials/20050923/IntroductionToObjectSerialization.html
Como transformar um usuário limitado em um administrador no Windows XP
12/07/08
Se você é um usuário limitado no Windows XP, você pode sem fazer reinstalação do sistema se transformar em um usuário administrador. Mas para tal truque dar certo você terá que ter acesso a BIOS. Se ela estiver protegida por senha, nem siga em frente na dica.
O truque consiste em você baixar uma pequena ferramenta chamada PCLoginNow que reseta a conta local de administrador e as outras contas do sistema. A ferramenta reseta rapidamente as senhas do Windows e as configurações de segurança. Todas as versões do Windows são suportadas!
Vamos a dica.
Primeiramente tenha certeza de que você tem acesso a BIOS da máquina. Se tiver, baixe o PCLoginNow aqui. Agora siga o passo a passo:
1 – Queime em um CD/DVD a imagem do PCLoginNow
2 – Acesse a BIOS e altere a seqüência de boot inicial para iniciar pelo CD/DVD
3 – Boot pelo CD que você gravou do PCLoginNow
4 – Clique no botão “Next” quando você ver a mensagem “PC Login Now! is ready to start, please click NEXT to continue…”
5 – Selecione o Windows que foi achado pelo PC Login Now.
6 – Selecione a conta do usuário que você quer editar, marque a opção “is Administrator” e clique em Next
7 – Reinicie o computador e volte a seqüência de boot na BIOS para como estava.
Pronto.
Agora o usuário alterado já será um administrador nessa máquina sem nenhum esforço. Se você for usar a dica, use com responsabilidade. Se você é administrador de sistemas, proteja os computadores setando senhas na BIOS quando for possível.
Fonte: Raymond.cc
Como obter informações do sistema operacional usando Java
11/07/08
Essa é uma dica rápida para quem programa Java e precisa saber de algumas informações do sistema operacional ou do próprio Java em que a aplicação está rodando. Dependendo dessas informações, podemos tomar decisões em código específicas para um determinado sistema.
Para fazer isso, o Java nos fornece o método getProperty(String key) da classe System.
O parâmetro key é uma string que fornecemos ao método para que ele nos retorne as informação que desejamos, como nome do sistema operacional, versão do java…
Vamos ao exemplo:
package com.meupost.main; public class Main { public static void main(String[] args) { String vendor = System.getProperty("java.vendor"); String osName = System.getProperty("os.name"); String separadorArquivo = System.getProperty("file.separator"); System.out.println("Java Vendor: " + vendor); System.out.println("Sistem Operacional: " + osName); System.out.println("Separador de Arquivos: " + separadorArquivo); } }
No trecho de código acima é atribuído nas Strings informações como o vendor, o nome do sistema operacional e o caractere que o sistema operacional usa para separar os arquivos. Se o código acima fosse executado em Windows XP, o resultado seria:
Java Vendor: Sun Microsystems Inc.
Sistema Operacional: Windows XP
Separador de Arquivos:
Se fosse executado em Linux:
Java Vendor: Sun Microsystems Inc.
Sistema Operacional: Linux
Separador de Arquivos: /
Abaixo segue uma lista com as chaves que podem ser passadas como parâmetro no método getProperty().
| Key | Description of Associated Value |
|---|---|
| java.version | Java Runtime Environment version |
| java.vendor | Java Runtime Environment vendor |
| java.vendor.url | Java vendor URL |
| java.home | Java installation directory |
| java.vm.specification.version | Java Virtual Machine specification version |
| java.vm.specification.vendor | Java Virtual Machine specification vendor |
| java.vm.specification.name | Java Virtual Machine specification name |
| java.vm.version | Java Virtual Machine implementation version |
| java.vm.vendor | Java Virtual Machine implementation vendor |
| java.vm.name | Java Virtual Machine implementation name |
| java.specification.version | Java Runtime Environment specification version |
| java.specification.vendor | Java Runtime Environment specification vendor |
| java.specification.name | Java Runtime Environment specification name |
| java.class.version | Java class format version number |
| java.class.path | Java class path |
| java.library.path | List of paths to search when loading libraries |
| java.io.tmpdir | Default temp file path |
| java.compiler | Name of JIT compiler to use |
| java.ext.dirs | Path of extension directory or directories |
| os.name | Operating system name |
| os.arch | Operating system architecture |
| os.version | Operating system version |
| file.separator | File separator (“/” on UNIX) |
| path.separator | Path separator (“:” on UNIX) |
| line.separator | Line separator (“n” on UNIX) |
| user.name | User’s account name |
| user.home | User’s home directory |
| user.dir | User’s current working directory |
Obtendo variáveis de ambiente com Ruby
07/07/08
As vezes em nossa aplicação precisamos verificar ou ver se uma variável de ambiente realmente foi “setada“.
Em Ruby isso é muito fácil fazer.
Veja o código:
1 2 | path_bruto = ENV['path'] puts "Path Bruto: #{path_bruto}" |
Pronto. Muito fácil.
Podemos trabalhar da maneira que quisermos quando recuperamos o valor de uma variável de ambiente. Abaixo, segue um trecho de código bem simples onde quebramos a variável de ambiente “path” em um array e imprimo na tela cada posição do array.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | path_bruto = ENV['path'] puts "Path Bruto: #{path_bruto}" # Vamos trabalhar um pouquinho com o resultado do ENV. # O path_bruto é "quebrado" com um split. A cada caracter ";" # que ele encontra, ele transforma em uma posição no array. path_array = Array.new path_array = path_bruto.split(";") puts "Encontrados #{path_array.size} paths. Vamos exibi-los" # Loop para exibir os caminhos no array path_array.each do |path_separado| puts "Path: #{path_separado}" end |
Uma observação a se fazer é que não é possível setar uma variável usando o ENV. Por exemplo, isso aqui não é possível:
1 | ENV["var"] = "nova_variável" |
Mas, se você criar um arquivo batch, setar a variável no arquivo batch e chamar seu código Ruby a partir desse arquivo batch, a variável setada fica disponível para você na sua aplicação. Vamos aos exemplos.
Temos nosso arquivo BAT:
1 2 3 | @echo off set minha_variavel=Ola Mundo ruby show_minha_var.rb |
E nosso arquivo Ruby que exibe a variável setada no arquivo bat.
1 2 | minha_var = ENV["minha_variavel"] puts minha_var |
Execute o arquivo bat e veja que a variável nele setada também fica disponível para você usar em seu código Ruby.
É isso aí pessoal. Espero que tenham curtido essa dica.
Até a próxima!













Comentários