sábado, 20 de novembro de 2010

Instalando o Plugin do SVN no Eclipse

Para quem usa o Eclipse e o SVN, provavelmente não é novidade que se tenha algum problema ao instalar o plugin... o fato é que, apesar de o Eclipse ser uma excelente IDE (tanto para desenvolvimento Java como para Web, C, C++, Phyton, e milhares de outras linguagens), ele não vem com um plugin para o SVN por padrão (vem apenas com o plugin do CVS), e a gente tem que instalar manualmente o plugin de nossa preferência.
Este artigo ensina como se instalar o plugin Subclipse, que considero ser o mais fácil de se instalar e usar. As instruções foram testadas no Eclipse Galileo e Helios, utilizando o SVN Server versão 1.6 no servidor (todas as versões mencionadas são bem atuais, no momento de criação deste artigo). Note que tratamos, aqui, apenas da parte cliente. A parte servidora, ou seja, a instalação e configuração do SVN, já foi tratada em diversos outros artigos deste portal, como este e este.
É importante saber qual versão do SVN instalada no servidor que você usa, uma vez que os clientes de SVN, como o plugin do Eclipse, que funcionam localmente, precisam de um driver para falar com o servidor, e este driver é específico para cada versão.

  • Como descobrir a versão de meu SVN Server??
Bem simples. Acesse a máquina servidora onde o seu Subversion (servidor) está instalado e digite "svnserve --version" ou "svnadmin --version". Observe a primeira linha da saída de texto:

$ svnserve --version
svnserve, version 1.6.6 (r40053) compiled Dec 12 2009, 05:06:12

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

  • Preparando para Instalar o Plugin do Eclipse

Para todas as operações daqui para frente você deverá ter um JDK (Java Development Kit) instalado em sua máquina. Caso não o tenha, você poderá baixá-lo gratuitamente aqui.
Supomos que você baixou o Eclipse do site oficial (http://www.eclipse.org/), e que é a versão correta para seu sistema e sua arquitetura (32 ou 64 bits). Recomendo que baixe a compilação mais completa, com as ferramentas de JEE, uma vez que elas poderão ser muito úteis, mesmo que você inicialmente não vá desenvolver para web. Agora basta descomprimir o Eclipse e colocá-lo em uma pasta acessível.
Para rodar o programa, basta rodar o seu executável dentro de sua pasta padrão (não é necessária qualquer processo de instalação prévio):

cd eclipse
./eclipse

A instalação do plugin é feita de dentro do Eclipse mesmo, acessando o menu HELP, opção "Install New Software...", conforme mostra a Figura 1.


Figura 1: Menu Help do Eclipse Helios.

Acessando esta opção, entramos na ferramenta de atualização e instalação de novos plugins para o Eclipse. Virtualmente qualquer coisa pode ser instalada ou removida de seu Eclipse nesta tela. Portanto, tome cuidado ao mexer nestes componentes, pois não é tão difícil "quebrar" as dependências dos plugins e corromper o seu Eclipse.


  • Instalando o Subclipse, SVN Plugin para o Eclipse

Na tela de instalação de novos plugins, alcançada no item anterior, precisamos adicionar o repositório na rede onde encontraremos o plugin de que precisamos. Alguns repositórios já existirão na lista de repositórios desta janela, mas são os repositórios padrão do Eclipse, e não de outros plugins desenvolvidos por terceiros. Note que, nestes repositórios padrão, existe o plugin Subversive, que tem funcionalidades análogas ao Subclipse, sendo uma alternativa a este. Nunca instale os dois!! Este artigo, contudo, limita-se apenas ao Subclipse.
O repositório correto poderá ser encontrado na própria página do Subclipse, item Download and Install. Para ajudá-lo, já copiei o endereço do repositório aqui:

http://subclipse.tigris.org/update_1.6.x

Este endereço é acrescentado clicando-se no botão "Add". Uma vez acrescentado, o repositório é lido (se você estiver conectado à internet, claro!!), e as opções aparecerão na janela principal. Vide Figura 2 (clique para aumentar!).


Figura 2: tela de atualização e instalação de novos plugins do Eclipse, com o repositório do Subclipse adicionado e sendo lido.

Neste momento, basta se saber selecionar os itens corretos e deixar que o próprio Eclipse encontre os plugins, baixe-os e instale-os automaticamente para você!! Assim, para que tudo funcione, selecione os itens:

Aba "Subclipse", item "Subclipse";
Aba "Subclipse", item "Subversion Client Adapter";
Aba "Subclipse", item "SVNKit Client Adapter".

E, para o driver do subversion:
Aba "Core SVNKit Library", item "SVNKit Library".

- Clique em "Next";
- Confirme os plugins, clicando em "Next" novamente;
- Aceite os termos da licença e conclua a operação, aguardando o término do download.

Após o download e instalação completos, o Eclipse pedirá que seja reiniciado. Procure reiniciar apenas se seus trabalhos estão todos salvos.
Se, em algum momento deste procedimento, surgir uma mensagem dizendo que você está instalando um software que não foi verificado ("Warning: You are installing software that contains unsigned content. Blá blá blá blá..."), ignore-a. O procedimento está correto, a despeito disto...


  • Testando a Instalação

Se o Eclipse reiniciou corretamente, provavelmente estará tudo pronto. Para verificar se o Subclipse foi instalado corretamente, selecione a perspectiva que lhe é característica: acesse o menu WINDOW, opção "Open Perspective". Selecione "Other" e escolha a perspectiva "SVN Repository Exploring", exatamente como está na Figura 3:


Figura 3: Abrindo a perspectiva do Subclipse.

Esta perspectiva deve existir na lista. Caso não haja, alguma coisa ficou faltando...
Abrindo a perspectiva, você poderá instalar um repositório, seguindo o item abaixo.


  • Instalando um Repositório

Um repositório é o local remoto onde está o banco de dados do SVN, contendo seus dados versionados. Vide os tutorias anteriores do Pajé sobre SVN para aprender mais sobre repositórios, SVN e a parte servidora (referenciados no caput deste artigo).
Para instalar um repositório, abra a perspectiva do SVN (conforme mostrado no item anterior) e clique com o botão direito no view "SVN Repositories". Selecione a opção "New" e sub-opção "Repository Location". Surgirá uma janela pedindo o local do repositório. Complete com os dados que você tem a respeito de seu repositório. Logo depois, uma nova janela perguntará dados adicionais, como o nome do usuário, a senha do usuário e a porta que deve ser acessada no servidor. Complete todas estas informações com os dados corretos da configuração de seu servidor (ou pergunte ao administrador da sua rede como ele configurou isso tudo...).
Uma última tela, que surge apenas no primeiro acesso, pede que você confirme o recebimento da chave de segurança, caso a conexão seja segura. É possível que surja, ainda, outra tela pedindo que repita o nome do usuário. Estas duas perguntas podem ou não ocorrer, dependendo da situação do seu servidor. Responda "Yes" para a primeira e complete a segunda sem sustos com os dados que você já tem.
Prontinho!!! Seu repositório está na lista!! Clique no ícone ao lado esquerdo do endereço, para abri-lo, escolha o projeto que deseja baixar e clique com o botão direito em cima da pasta, selecionando o comando checkout. Isto baixará seu primeiro projeto com esta instalação do cliente SVN.

Boa sorte!! Espero ter sido detalhista o suficiente para que todos que venham a este artigo consigam fazer a instalação com sucesso!! Lembrem-se que, como sempre, em qualquer artigo deste portal, é fundamental que COMENTEM!!

sábado, 30 de outubro de 2010

Testando a Placa de Vídeo no Linux com mesa-utils

Então imagine: você acabou de instalar a sua nova distribuição Linux, ou a nova versão dela, e quer saber se o driver de vídeo está rodando, ou seja, se a sua placa aceleradora de vídeo funciona perfeitamente. Ou então: você acaba de trocar ou comprar uma placa de vídeo nova e quer saber se o driver está rodando direitinho... mais ainda: você acabou de instalar o driver da placa de vídeo e quer confirmar se ele está funcionando. Outro cenário: instalei o Kubuntu, mas os efeitos gráficos não estão funcionando; quero testar a placa de vídeo.
Tudo te leva a uma mesma pergunta: como testar, de forma rápida, a performance do vídeo no Linux??


  • Usando o glxgears

Existe um programa simples e rápido para tanto!! Ele é denominado glxgears e nem sempre vem com a sua distribuição. Não se preocupe: ele pode ser instalado com o conjunto de aplicativos gráficos do pacote mesa-utils. Se sua distribuição é baseada em Debian, instale, como root:

apt-get update
apt-get install mesa-utils

Agora simplesmente abra um terminal (Terminal ou Konsole) e digite:

glxgears

Se tudo estiver certinho com sua placa de vídeo, driver e configurações do X, então deve aparecer uma janela do X com três simpáticas engrenagens rodando ativamente. Deixe o terminal aberto. A cada 5 segundos, haverá uma saída de texto no terminal indicando o desempenho gráfico de sua placa (quantidade de frames per second - fps - ou: quadros por segundo).
Veja o exemplo na imagem abaixo...




  • Obtendo Informações sobre a Placa de Vídeo

Se o seu caso é obter informações mais detalhadas (bem mais avançadas!) e técnicas sobre a placa de vídeo e todos os módulos e bibliotecas que o driver de vídeo está rodando, pormenorizadamente, então este pacote acima vai te ajudar com outro programa simples e útil. Digite no terminal, após instalar o pacote mesa-utils:

glxinfo

Surgirá uma saída de texto enorme, contendo diversas informações sobre seu dispositivo de vídeo, o driver que está rodando e todos os detalhes concernentes. Apenas um pequeno trecho do mesmo (clique para ampliar):




  • Testando Eventos de Janela

Outra ferramenta presente neste pacote e que pode ser particularmente útil para programadores, como desenvolvedores de jogos, é o programa glxdemo. Ele abre uma pequena janela com um quadrado amarelo centralizado, ocupando grande parte da janela. A cada pixel que o usuário mova ou redimensione as bordas da janela, é gerado um evento que o glxdemo captura e acusa numa saída de texto. Para usá-lo, abra-o no terminal e tente mover ou redimensionar a janela:

glxdemo

Vide o exemplo:



  • O Teste Final: Testando Múltiplas Conexões com GLX

Similar ao glxgears, existe o glxheads, porém este testa múltiplas conexões com o GLX. O resultado é uma janela com um triângulo rodando, sendo recalculado e redesenhado, com uma simpática saída de texto indicando lindamente o nome de sua placa de vídeo e algumas informações básicas sobre a mesma. Basta digitar, no terminal:

glxheads

Vide o exemplo (clique para aumentar, como todos os outros):




Bom, pessoal... espero ter ajudado em alguma coisa!! O objetivo deste artigo foi contribuir tanto para usuários com problemas de configuração de placas de vídeo quanto para programadores interessados em explorar o máximo delas. Conforme todos os outros artigos, se você gostou, detestou, salvou sua vida ou acabou de vez com ela: COMENTE!!!
E até a próxima!!

sexta-feira, 24 de setembro de 2010

Dica Desert Operations: Quando o Melhor Ataque é a Defesa!

OK, todos já sabem que eu ando jogando este jogo e que, ao lado de dicas do Linux, eu publico dicas de jogos de estratégia... bom, mas esta dica de hoje também é boa e se dirige a jogadores de nível intermediário ou mesmo avançado!! Vamos ao cenário: você normalmente junta muito dinheiro com suas fábricas, metrópoles e cidades, e gasta tudo fazendo tanques e navios, soldados e mergulhadores?? Cada ataque que você realiza consome grande parte de suas frotas e você precisa ficar de resguardo, construindo tudo de novo?? Está cada vez mais custoso atacar, porque seus inimigos são fortes e a garantia da vitória é proporcional ao peso de sua frota?? E, o pior: depois de um ataque de sucesso, suas frotas encontram-se debilitadas e você fica muito vulnerável a contra-ataques, que podem tomar grande parte de suas suadas conquistas?? Pois é, então está na hora de jogar usando uma estratégia diferente: a defesa!!
Quem sofre um ataque normalmente é avisado alguns minutos antes. De cada ataque realizado, podemos colher um de dois resultados:

  • O atacante é vitorioso: então ele toma dinheiro, fábricas, minas, cidades e metrópoles do defensor. Derruba suas frotas e defesas, ou grande parte delas.
  • O atacante é derrotado: tudo acontece em sentido inverso!! O defensor derruba as frotas do atacante, ou grande parte delas. Como contra-ataque, automaticamente toma-lhe dinheiro, cidades, fábricas, minas, metrópoles...

Veja que pode ser extremamente útil trocar, em certas situações, uma estratégia de ataque por uma de defesa!!
Mas, como realizar uma boa defesa?? Agora sim está falando a minha língua!! Siga as dicas abaixo:

  • Antes de tudo, empregue algum tempo (e dinheiro) investindo em mecanismos de defesa. Estão todos no Centro de Pesquisas, aba Defesa. Claro que grande parte dos pré-requisitos já estarão desenvolvidos se você já tem alguma coisa de marinha e exército, mas os melhores mecanismos de defesa exigem que as pesquisas vão um pouco mais além;
  • Construa suas defesas. Elas não encarecem com a quantidade. Vá no Pentágono e mantenha-se sempre construindo;
  • Nunca exagere, construindo apenas defesas de um tipo. Existem armas que detonam certas defesas sem sofrer qualquer ferimento. Desenvolva um pouco de cada, e mantenha o máximo de variedade possível nas suas defesas;
  • Crie uma frota para atacar com R1, mas que não será usada em ataque. Esta frota será acionada imediatamente se você for atacado. Coloque nesta frota apenas os armamentos que têm nível de defesa maior (ou ao menos igual) que nível de ataque, como os tanques T90, os Tanques Anti-Aéreo, corveta K130 e Submarino Classe 212A;
  • Tenha na sua frota de defesa sempre ao menos um item de cada meio (terra, mar e ar), para evitar perder tudo com ataques de meios dos quais não há defesa (exemplo: se sua frota está cheia de tanques, mas não tem nenhum avião ou helicóptero, e você for atacado por um avião...);
  • Lembre-se de que os espiões nem sempre olham os armazéns. Neste caso, mantenha no armazém uma frota reserva, cópia idêntica em poder ou preferencialmente até mais poderosa que a frota que você está usando em R1 para defesa;
  • Antes de qualquer ataque você tem alguns minutos... entre sempre no jogo e, se você vir um ataque agendado, corra aumentando as defesas e movendo seu armazém para a frota de defesa. Muitas batalhas podem ser ganhas surpreendendo o inimigo assim, mesmo aquele que se deu o trabalho de espionar detidamente seu arsenal;
  • Outra opção seria enganar os espiões trouxas: manter uma frota de defesa magrinha mas um armazém lotado de armas de todo o tipo. Na iminência de um ataque, após a espionagem, você pega e move grande parte para a frota de defesa. Subitamente, sua defesa fica bem mais forte e supera o ataque projetado pelo seu inimigo, ganhando fácil grandes vantagens sobre ele...

Bom, pessoal, como é custoso produzir tudo isso apenas para a defesa, igualmente é custoso produzi-lo para atacar... espero que estas dicas de estratégias do Desert Operations sejam utilizadas sabiamente e ajudem aos colegas jogadores!!
E lembrem-se: o importante, afinal, não é ganhar, mas sim se divertir!! Qualquer coisa: COMENTEM!!!

domingo, 12 de setembro de 2010

Desert Operations: Dicas para o Jogo

Pessoal, como alguns já sabem, tenho me divertido muito com o jogo online de estratégia Desert Operations. Já escrevi aqui um artigo contando brevemente como é o jogo e com um tutorial em vídeo para iniciantes. Este presente artigo, vindo a completar o primeiro, contém algumas dicas estratégicas que servirão tanto para iniciantes quanto jogadores intermediários. Espero que sejam úteis!!

  • Ao se iniciar no jogo, procure logo construir todas as construções. Ao menos um prédio de cada construção.
  • Note as seguintes regras básicas do jogo:
  1. Todas as construções de imóveis (prédios, cidades, fábricas, Universidade, minas, aeroporto, etc.) só podem ser feitas uma por vez. Algumas, no entanto, permitem que você indique quantas unidades pretende construir na seqüência, o que é ótimo, mas lembre-se de que cada unidade nova aumenta o preço total, embora não aumente o tempo de construção;
  2. Fabricações de armamentos, como tanques, navios e aviões, armas e militares (soldados, mergulhadores, etc.) podem ser feitas simultâneamente. Independente da quantidade solicitada, o tempo de construção será o mesmo, apenas o preço que fica mais salgado;
  3. As unidade que permitem acumular fabricações (chamada "expansão"), como os simuladores, os campos de tiro e as fábricas de tanques, navios e aeronaves, vão ficando significantemente mais caras e demoradas a cada expansão.
  • Projete bem as suas construções e expansões para não ficar, na hora H, com a possibilidade de construir bloqueada esperando uma tarefa demorada terminar...
  • Sempre deposite dinheiro no banco, ele te ajuda a render mais dinheiro, o que é sempre bom, mesmo a curto prazo. Nunca desfalque sua conta no banco e evite sacar. Tente, ao máximo possível, trabalhar com o que você tem em mãos.
  • Atente para as construções que aumentam a geração de capital: Metrópoles e Fábricas geram um bom dinheiro, secundadas por cidades. Minas são importantes para gerar ouro, que é inútil para iniciantes, mas muito valioso no mercado e nas atividades de espionagem.
  • Embora cidades gerem pouco dinheiro (em relação às Metrópoles), são mais baratas e mais rápidas de se construir. Assim, você pode gerar cidades e fábricas (também barato e rápido de se construir) só para servir de isca para possíveis ataques, que vão destruí-las, preservando um pouco mais as suas metrópoles.
  • Esforce-se por manter sempre uma pesquisa em andamento. Existem pesquisas que são realmente demoradas, e você precisa realizá-las para aumentar as possibilidades de fabricação de armamentos (novos tanques, novos navios e submarinos, novos aviões, novos mecanismos de defesa). Lembre-se de que o jogo só permite que se realize uma pesquisa de cada vez. Não adianta choramingar...
  • Planeje as suas pesquisas: algumas são cumulativas e algumas estão presentes como pré-requisito para diversas armas, inclusive algumas da defesa!!
  • Um bom estrategista tem sempre uma frota especial para a defesa de sua cidade, com prioridade R1. Assim, se você for atacado, seu inimigo se surpreenderá com a sua frota de defesa e, mesmo que ele ganhe, vai ter de sacrificar muitos de seus recursos.
  • Um bom estrategista sempre mantém uma rede de defesa forte. Mas não mais forte do que sua frota, pois a defesa é sempre a primeira coisa que cai, e a frota é o que vem depois, quando a batalha esquenta. Se você aplicar todo o seu dinheiro montando uma defesa boa, a sua frota vai ficar fraca demais e, quando a defesa cair, a sua derrota será certa... o inimigo é tanto mais forte quanto mais capaz de desafiar e derrubar sua defesa.
  • Atente para os valores de ataque e defesa de cada componente militar (desde soldados até navios, aviões e tanques). Observe que alguns itens têm a defesa forte e o ataque fraco, como o tanque T90 e a Corveta, sendo próprios para uma frota exclusiva de defesa. Outros, no entanto, têm o ataque muito forte e a defesa ridícula, como o Detector de Minas Hameln, sendo apropriados para uma frota somente de ataque. Posicionar suas armas em seus devidos lugares é uma arte e pode ser a garantia do seu fortalecimento ou sua fraqueza...
  • Poupe diamantes!!! Eles podem ser a moeda do jogo, mas adquirí-los custa dinheiro de verdade!!
  • Planeje sua renda para não faltar dinheiro, mas planeje o uso de seu dinheiro para tê-lo em constante gasto e mantendo seu jogo sempre construindo e/ou pesquisando alguma coisa, continuamente. As pesquisas, rendas e construções permanecem ocorrendo, depois de iniciadas, mesmo se você estiver desconectado.
  • Acompanhe a sua pontuação e a sua classificação geral no jogo, são bons medidores de seu desempenho.
  • Acompanhe obstinadamente as mensagens de correio. São através delas, nos relatórios de combate, que você se informa se foi atacado, podendo visualizar o relatório detalhado do combate e alguns dados de seu oponente.
  • Seja cuidadoso ao entrar em alianças, mas não se deixe abater: é normal que você sofra derrotas e ataques, visto que existem jogadores mais fortes que você, mas levante-se, anime-se e prepare-se para competir!! Espírito esportivo, pois trata-se de um jogo apenas, e jogo não é a vida real!!

Beleza, pessoal!! Boa diversão e, não esqueçam: COMENTEM!!!

sábado, 4 de setembro de 2010

KTurtle: Programando em Logo no KDE


O KTurtle, da suíte do KDE. Fácil e simples ambiente de programação em Logo.



Um exemplo das possibilidades de desenho com a tartaruguinha...


Existem inúmeros usuários do KDE no mundo hoje em dia, mas ainda muito poucos conhecem a grande diversidade de programas da sua suíte. Posso mesmo arriscar dizer que, talvez por não serem essenciais para o funcionamento da interface, muitos destes programas são verdadeiramente marginalizados e esquecidos pelas distros populares de Linux e seus usuários. Dentre tais cito especialmente os diversos aplicativos da seção Educação, dividida em quatro ricas sub-seções: Linguagens, Matemática, Miscelânea e Ciência. Hoje vou tratar do KTurtle, presente na sub-seção Miscelânea.
O KTurtle é um simpático interpretador para a antiga linguagem Logo, criada por Seymour Papert do MIT Artificial Intelligence Laboratory em 1967. O grande objetivo deste programa, assim como o da linguagem que interpreta, é, segundo seus desenvolvedores, “tornar a programação tão fácil e acessível quanto possível” (Manual do KTurtle), de forma a poder ensinar a crianças, de modo agradável, intuitivo e prático, os fundamentos da matemática, geometria e programação.
Enfim, o Logo é uma linguagem cujo principal fim é criar programas que, através do cálculo de variáveis e das estruturas básicas de algoritmos, consigam gerar números que vão orientar o movimento de uma sorridente tartaruguinha na tela. Mover a tartaruguinha ensina matemática e geometria, mas também ensina programação, lógica e alguma coisa artística, com sorte...
O KTurtle é é uma ferramenta fantástica para este objetivo: possui uma interface simples e fácil de usar, aceita modo de tela cheia e numeração das linhas do código, possui identificação colorida de sintaxe, tem várias velocidades de execução, para a observação mais apropriada do movimento da tartaruga e permitindo ao usuário, inclusive, pausar a execução a qualquer momento e retomá-la quando quiser, ou mesmo mudar a velocidade durante a execução, após soltar o botão pause. Quando executando em qualquer velocidade (exceto a mais rápida), cada comando é marcado no momento de sua execução, facilitando a depuração e entendimento do código. Possui uma boa ferramenta de seleção de cores. Por fim, os lindos deseninhos feitos com nossa amiga tartaruguinha podem ser salvos em arquivos PNG.
Como um dos objetivos do Logo é ser acessível e ter seus comandos traduzidos para a linguagem do usuário, o KTurtle suporta igualmente traduções para outros idiomas além do inglês.


  • Exemplo de Código em Logo

Um exemplo de um programa bem simples em Logo está listado abaixo, com o resultado do movimento da tartaruguinha na figura correspondente. Observe que o Logo permite inclusive estruturas de repetição (com o comando repeat).

repeat 9 [

go 150, 130
repeat 20 [
turnright 10
forward 10
]

]





  • Concluindo

Considero o Logo uma boa ferramenta para a educação e me espanto em vê-la tão pouco explorada. Acredito que isto se dê devido especialmente à desinformação neste campo, visto que hoje é relativamente fácil se encontrar laboratórios de informática nas escolas e existem aplicativos como o KDE e o KTurtle que rodam mesmo em máquinas mais humildes, oferecendo, todavia, gratuitamente e com alta qualidade, fartos recursos para a excelência desejada na experiência com dada linguagem e cumprimento de seus objetivos.

sábado, 14 de agosto de 2010

Criando Objetos em JavaScript

Apesar de JavaScript ser uma linguagem procedural, ela também é uma linguagem orientada a objetos. Como pode ser isto?? A explicação é simples: inicialmente, o JavaScript era apenas uma linguagem estruturada, procedural, e ponto final. No entanto, ela ganhou tantas melhorias e novas ferramentas durante as suas muitas modificações, releituras e ampliações que se tornou possível utilizar facilmente o paradigma de orientação a objetos através de determinadas técnicas de construções de funções (além de poder utilizar o operador "." para navegar pela estrutura DOM).
Este artigo versa sobre como utilizar as ferramentas funcionais de JavaScript para trabalharmos com orientação a objeto, de forma a dar mais poder, flexibilidade e organização a nosso código. Parte do que material teórico de precisaremos já foi discutida no nosso velho tutorial sobre o objeto Date e o prototype, que pode ser acessado aqui.
Vale lembrar que objetos (na verdade, as suas classes) podem ser instanciados diversas vezes, sendo suas instâncias independentes umas das outras. As técnicas mostradas aqui respeitam esta característica do paradigma OO. Note que, como o JavaScript é não tipado e procedural, a linguagem assume que todos os objetos e métodos criados têm ampla visibilidade (modificador de acesso público) e nunca gerarão diretamente problemas de casting. Se você não entende este detalhe técnico, não se preocupe, pois ele não lhe fará falta... siga em frente tranqüilo!!

  • Criando um Objeto em JavaScript

Basta criar uma função normalmente e instanciá-la com o operador new. Em outras palavras, o operador new pode tornar em objeto qualquer função que você escreva. Vejamos:

function Object() {
}

window.alert(new Object());

O código acima declara uma função e, através do seu instanciamento, esta função é tornada em objeto na memória. Simples e fácil.
Parece louco que qualquer função em JavaScript é automaticamente uma candidata à classe e ao instanciamento, mas é isto mesmo: JS é muitas vezes simples e prático!!


  • Criando Métodos em JavaScript

Igualmente simples, para se criar um método basta se criar uma variável dentro de uma função onde seja declarada uma outra função, ao invés de um valor. Veja os exemplos:

function Object() {
this.getName = function() {
return "Object Hello World!!";
};
}

var object = new Object();
window.alert(object.getName());

Observações importantes:
1- Sempre que declarar um método, para se ter certeza de que este método vai ser uma função intrínseca ao objeto, deve-se usar a palavra reservada this, conforme mostra o exemplo acima;
2- Como a declaração de método é, na verdade, uma declaração de variável, deve-se terminá-la com o ponto-e-vírgula depois do fecha chaves!! Este é um erro clássico, mormente para quem faz este procedimento pela primeira vez;
3- Os métodos, em sendo funções, podem receber parâmetros normalmente, como qualquer outra função ordinária.

Outra maneira de se declarar um método é através de associação de funções a variáveis indiretamente, conforme o exemplo:

function Object() {
this.getFullName = getFullName;
}

function getFullName() {
return "Super Object Hello World!!";
}

var object = new Object();
window.alert(object.getFullName());

Esta técnica é útil quando se quer fazer métodos iguais para dois ou mais objetos. Como uma arquitetura bem projetada tende a eliminar este cenário, talvez seja mais interessante utilizar o primeiro idioma, vez que ele é de mais fácil leitura, menos verboso e, especialmente, evita o problema de duplicação de nomes de métodos e funções, o que tente a provocar erros bobos mas de difícil depuração.


  • Usando o Objeto Prototype

É possível, por extensão, adicionar-se propriedades e métodos a objetos já existentes do JavaScript. Para tanto, precisaremos acessar o objeto prototype, presente em todos os objetos, e capaz de absorver novas variáveis de funções e valores. Estude o exemplo abaixo, onde iremos modificar o objeto String para que ele tenha um método a mais, capaz de retornar a primeira palavra da String. Para se chamar o método, não é necessário se acessar o objeto prototype pois, uma vez este declarado através daquele, o método passa a compor a estrutura do objeto, em qualquer instância que seja.

String.prototype.getFirstWord = function() {
if(this.length > 1) {
for (i=0; i < this.length; i++) {
if (this.charAt(i) == ' ') {
return this.substring(0,i);
}
}
}
return "";
};
window.alert("pajé online".getFirstWord());


  • Conclusão

Apesar do JavaScript ter sido projetado, originalmente, como uma linguagem estrutural, procedural, simples e singela, hoje é possível, através de mecanismos simples e da maleabilidade creditada à linguagem, extendê-las de diversas maneiras, como a aplicação do paradigma de orientação a objetos. Não é tão complexo criar objetos, métodos e propriedades em JavaScript (na verdade, talvez até mais simples que em outras linguagens mais fechadas dentro dos conceitos do paradigma, como o Java), porém é de extremo valor para um desenvolvimento mais profissional, flexível, extensível e complexo, permitindo manter-se a ordem e a hierarquia dos dados, além da boa estrutura e manutenência do código.
Gostou?? Detestou?? Foi bom pra você?? Então COMENTE!!!

quarta-feira, 11 de agosto de 2010

Iniciando-se no Jogo Desert Operations


Olá Pessoal!!

Para não dizer que falo apenas de trabalho, estou passando uma dica de um jogo online, gratuito (até certa medida), com o qual tenho me entretido um pouco... é o "Desert Operations" (o link para o servidor em português do Brasil é este: http://www.desert-operations.com.br). Trata-se de um jogo de estratégia, baseado no antigo modelo de países, cidades, territórios e alianças, todos em guerra, naturalmente, onde você tem que montar a sua cidade e o seu poder militar, vender e trocar recursos, explorar os trabalhadores em troca de impostos, fazer laços de amizade e alianças com outros países, atacar os mais fracos e ganhar dinheiro para colocar no banco e render juros. Nada pouco violento, porém ainda no nível da estratégia.
Para quem quiser dar uma olhadela no visual do jogo, existe o vídeo de um breve tutorial para iniciantes, que pode ser visto aqui.
O jogo é bem interessante e completamente online. Fortemente baseado em image map (apenas alguns componentes secundários, como o Chat, em Flash), é impressionantemente compatível com qualquer navegador. Existe, no chat, uma sala exclusiva para aprendizado e é fácil de se obter, na tela principal, o manual do usuário. Minha crítica maior, até o momento, é que não dá para se deixar a janela aberta, mesmo que com o chat funcionando, e contar que a sua sessão se mantenha ativa sozinha. É preciso ficar clicando em alguma coisa, mesmo que de 10 em 10 minutos, senão sua sessão cai. Acredito que isto poderia ser resolvido com um cookie e/ou uma requisição remota AJAX simples, sem prejuízo das regras do jogo. Ao menos antes que algum viciado crie um proxy para fazer requisições repetidamente e manter a sessão aberta sem a presença física do usuário...
Bom... Se for de seu gosto, espero que se divirtam!!