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

sábado, 31 de julho de 2010

Várias Maneiras de Matar uma Aplicação

A verdade é a seguinte: embora o Kernel do Linux seja a coisa mais estável do mundo (impressionantemente estável como poucas coisas na vida!!), as aplicações que nós rodamos muitas vezes não têm esta mesma propriedade (nem tempo de desenvolvimento, já que o Kernel é de fato bem velhinho...). Assim, acontece o inesperado: as aplicações travam!! E a gente tem que pedir ao Kernel que as "mate", ou seja, interrompa os seus processos, nem que seja bruscamente, e recupere (às vezes chamado "reivindique") a memória usada por elas. Não preciso nem dizer que, o que quer que estes programas estejam fazendo, vai para o espaço, e, uma vez tendo a memória que ocupam ao rodarem reivindicada, eles viram meras vagas lembranças...
Bom, este é o cenário deste artigo: como matar um programa no Linux?? As instruções servem tanto para programas rodando normalmente quanto para aqueles que travaram e não respondem. Qualquer programa pode ser matado porque quem mata é o Kernel, e com o Kernel ninguém pode (lembrem-se de que estamos falando de sistemas de verdade, e não de sistemas com falhas de proteção entre as camadas básicas, como o Windows e alguns sistemas embarcados muito simples...)


  • Matando Bruscamente

Matar bruscamente um programa é a última coisa que fazemos, recurso somente utilizado quando nada mais é possível e o programa não responde mais. A maneira mais simples é digitar o comando kill. Este comando precisa do argumento referente ao PID (identificador do processo) do programa e do tipo de sinal a ser enviado. Para achar o PID de seu programa, veja o número da primeira coluna deste comando:

ps -e

(a opção "-e" exige que se mostrem todos os processos).
Em geral isto exibe uma lista enorme. Então, se você sabe qual programa matar, resuma a saída com o comando grep (exemplo, vamos matar o kedit):

ps -e | grep kedit
20128 pts/0 00:00:00 kedit

Viu?? Apenas uma linha, que informa que o PID do kedit é 20128. Felizmente, só temos uma instância do kedit rodando. Agora vamos matar esse camarada (coitado, aqui ele tava rodando direitinho, mas foi eleito como bode expiatório deste tutorial... a vida nem sempre é justa...):

kill -9 20128

Isto mata exatamente aquela instância. Se houver mais de uma instância do kedit, elas terão identificadores diferentes (PIDs diferentes) e você conseguirá matar apenas a instância que você quer. Não se esqueça de usar o "-9", pois esta opção indica ao Kernel que realmente mate o programa, ou seja, que envie o sinal denominado "SIGKILL" para o processo.
Peraí!! O que é esse negócio de sinal?? É a maneira como o Kernel elenca os estados dos processos, e sabe o que fazer com cada um. Existem diversos estados, apesar de quase nunca precisarmos pensar nisso... mas o Kernel precisa controlar os sinais para que seus componentes saibam como tratar o processo. Por isso, o comando kill, apesar do nome, nunca mata realmente o processo, mas apenas solicita ao Kernel que troque o estado daquele programa, ou seja, que envie um determinado sinal para ele, o referente à sua morte, seu letal fim...
Quer saber quantos sinais existem?? Digite:

kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

Sua lista de sinais vai ser parecida com esta acima... Ainda bem que o Kernel gerencia isto tudo sozinho...


  • Matando Graficamente



ProcessTable: o gerenciador de processos do KDE.

Se você usa o KDE, então existe uma maneira de matar graficamente um aplicativo!! Aperte CTRL + ESC. Isto abrirá o ProcessTable, o gerenciador de processos gráfico do KDE. Identifique o nosso bode expiatório (kedit) na tabela, clique nele e aperte o botão "matar".
O ProcessTable faz o mesmo que o comando kill, porém de forma gráfica. Se essa for a sua preferência e se houver interface gráfica rodando, o procedimento pode ser feito tranqüilamente desta maneira sem nenhuma perda de eficiência.


  • Quem Pode Matar??

Todos os usuário podem matar seus processos, ou seja, não precisa ser root para matar um processo. No entanto, um usuário sem preferências de administrador não pode matar o processo do outro. Apenas o root (ou alguém com privilégios como tal) pode matar qualquer processo da máquina, porque, afinal de contas, o root é o root...


  • Matando Suavemente Um Serviço

Muitos programas, como deamons e serviços, têm toda uma rotina de clean-up (descarrego e limpeza) que é executada ao ser descarregado. Normalmente estas rotinas ficam em scripts e mesmo os scripts de shutdown do sistema (desligamento) estão encadeados em ordem, de forma que um só pode ser executado ao final da conclusão de outro. Para permitir uma morte mais limpa a estes programas especiais e evitar que, por algum motivo (e isto já vi várias vezes!!), o desligamento da máquina páre bruscamente no meio do procedimento, caindo num terminal em modo texto, esperando a conclusão de um processo que pendurou e nunca vai terminar, é possível fazer uma morte suave, mais tranqüila, que não interrompe o descarrego do serviço (e do sistema, conseqüentemente).
Vamos supor que o KDM tenha travado durante o desligamento do sistema. Assim, precisamos matá-lo. Porém, o seu processo implica em scripts que, se forem interrompidos bruscamente, como o foram, paralizam o desligamento, caindo num terminal em modo texto. Então, matamos o KDM desta maneira:

ps -e | grep kdm
2882 ? 00:00:00 kdm
kill -HUP 2882

A opção "-HUP" concede ao KDM uma morte suave, talvez até com opção de realizar o último desejo...


  • Matando de uma vez Todas as Instâncias de uma Aplicação

Se você tem várias instâncias de uma aplicação e quer matar todas elas, ou mesmo se só tem uma instância, mas não quer se preocupar em buscar o PID da mesma, basta usar o comando killall. Vamos ao exemplo, matando nosso pobre kedit:

killall kedit

Dessa, nenhum kedit que o referido usuário esteja rodando escapa...
CUIDADO: se você digitar um comando como este usando privilégios de root, você vai matar todas as instâncias de todos os usuários do referido programa, o que pode causar problemas sérios, especialmente se estiver no contexto de um servidor...


  • Resumindo...

Existem várias maneiras de se matar aplicativos no Linux. A notícia boa é que, por mais que as aplicações travem, o sistema é estável, permitindo-se recuperar o controle. Usar um método ou outro depende de sua situação: um usuário doméstico, rodando sobre interface gráfica, tenderá a considerar cômodo o ProcessTable. Um administrador de sistemas, logado remotamente e preocupado com os serviços que precisa manter no ar, vai mergulhar nas opções dos comandos kill e ps. Em suma: a gama de opções nos dá ferramentas para o uso mais apropriado em diversas situações.

Gostou deste tutorial?? Ajudou em alguma coisa?? Detestou completamente???? Então: COMENTE!!!!!!

segunda-feira, 26 de julho de 2010

Atualizando o Flash Player no Firefox

O Flash Player é um plugin para o Firefox. Ao atualizar o Firefox, muitas pessoas devem ter recebido a mensagem de que o plugin do Flash está desatualizado. De fato, existe uma versão mais nova (neste momento em que escrevo, a versão 10.1 substituiu a 10.0), que pode ser baixada do site oficial gratuitamente e instalada de diferentes maneiras, dependendo do formato do arquivo baixado (tar.gz, deb, etc.).


  • Instalando a Versão .deb

Esta é a mais fácil!! Basta baixar do site aí em cima o arquivo .deb e instalar com o comando (como root!!)

dpkg -i install_flash_player_10_linux.deb

Depois disso, reinicie o firefox.


  • Problemas e Observações Importantes:

1- Note que este procedimento acima instala sem o apt-get, aptitude ou qualquer outro gerenciador de pacotes moderno e sofisticado, logo, assume que você está baixando o arquivo correto para a sua distribuição. Se não for o arquivo correto, torna-se uma questão de sorte: o procedimento de instalação pode funcionar ou não, e, caso não funcione, você deve remover a instalação mal-sucedida deste pacote (que pode ser feita com o seu gerenciador de pacotes preferido, ou o apt-get).

2- Note que isto instala a biblioteca do Flash Player (que, na verdade, é apenas um arquivo, denominado "libflashplayer.so") no sistema, ou seja, na pasta "plugins" do local onde o seu Firefox ou Iceweasel está instalado. Isto pode não funcionar, porque o Firefox tem uma arquitetura que privilegia os arquivos encontrados na pasta pessoal do usuário em detrimento aos instalados no sistema.

O que isto quer dizer????
Bom, observe que você tem um diretório, em sua área pessoal (/home/usuario), denominado ".mozilla". Neste diretório são colocadas todas as preferências pessoais suas (temas, configurações, favoritos, etc.), que devem ser prioridades em relação aos padrões do sistema, ou seja, devem sobrescrever os padrões do sistema no momento em que o Firefox se carrega. Dentre estas opções, existe uma pasta denominada ".mozilla/plugins", onde os seus plugins pessoais podem ser carregados. Desta maneira, é possível instalar um plugin que tenha efeito apenas para um usuário (ou então, um usuário que não tem prioridade de administrador do sistema pode instalar seus plugins favoritos). O problema se inicia se você tem aí uma versão antiga do plugin do Flash. No momento em que o navegador se carrega na memória, ele vai dar preferência a esta versão antiga, deixando de lado a versão novinha instalada pelo root...

Como corrigir isto???
Há duas maneiras: a primeira, mais fácil, é remover o plugin antigo, deixando o Firefox carregar o plugin instalado no sistema. A segunda, é esta abaixo:


  • Instalando o Plugin na Pasta Pessoal do Usuário (versão .tar.gz)

Também é simples: basta baixar a versão do arquivo no formato .tar.gz e descomprimi-la:

tar -zxvf install_flash_player_10_linux.tar.gz

Surgirá o arquivo "libflashplayer.so". Agora, basta copiá-lo para o diretório de plugins desejado, que pode ser inclusive o diretório pessoal do Firefox, na sua área de usuário:

cp libflashplayer.so /home/usuario/.mozilla/plugins

Reinicie o Firefox!!


Para verificar a versão dos plugins, vá em Ferramentas -> Complementos -> Plugins e veja, na lista que surge, qual a versão do plugin do Flash que foi carregada!! Outra opção é você utilizar as facilidades do Pajé Online e clicar no botão "Plugins" da seção "Navigator" aí do lado direito.
Claro, se tudo der certo, faça logo o backup da sua pasta .mozilla, de forma a não perder as suas configurações!!
Bom, espero ter ajudado!! Qualquer coisa, vocês já sabem qual é a dança do Pajé: COMENTEM!!!!!