quinta-feira, 22 de dezembro de 2011

Script para Automatizar Conexões SSH

Se você é um solicitado administrador de redes, um responsável por uma lan house ou um laboratório Linux ou mesmo um usuário avançado, certamente já se viu na situação de ter de abrir várias sessões de SSH para máquinas diferentes com grande freqüência. Normalmente, isto não é problema algum, mas muitas vezes é chato e cansativo se digitar tantos parâmetros para abrir a conexão.
Se este é o seu problema, o script abaixo poderá lhe ajudar muito!!



  • Mas, o que ele faz??
Ele automatiza o comando do SSH retirando alguns dos indicadores de parâmetros, como o "-p".


  • Como Devo Usá-lo??
Primeiramente, grave o script com um nome sugestivo, como "fastssh.sh", colocando-o em um diretório dentro de seu PATH (por exemplo, o /usr/bin), para que possa ser executado de qualquer diretório.
Não se esqueça de determinar a permissão de execução para todos os usuários, com o comando:

chmod +x fastssh.sh


Agora, imagine que você tem dois servidores que precisam ser acessados rotineiramente, com as seguintes configurações:

nomes: "server1.dominio.com" e "server2.dominio.com".
porta do SSH: 1000.
usuário: "pele".

OBS1: é sempre recomendável, para garantir maior segurança, que o SSH utilize uma porta fora do padrão!!
OBS2: Cuidado!! Normalmente, não é recomendável se conectar em servidor diretamente como "root".

Você deverá criar então 2 arquivos bem simples:

server1.sh:
fastssh.sh server1.dominio.com 1000 pele

server2.sh:
fastssh.sh server2.dominio.com 1000 pele

Faça os dois arquivos se tornarem executáveis (utilizando o mesmo comando "chmod", conforme mostrado acima) e coloque-os igualmente em uma pasta como o /usr/bin (ou qualquer outra que esteja no seu PATH).
Pronto!! Parabéns, agora, para se conectar a qualquer um dos servidores, basta somente se chamar o script correspondente, digitando-se "server1.sh" ou "server2.sh".


  • Conclusões
Este artigo foi bem simples e mostrou uma técnica de automatização extremamente útil e a que, muitas vezes, na pressa do dia-a-dia nós não atentamos e não utilizamos. Muitas vezes, são nas tarefas mais banais onde se perde mais tempo... Assim, fica aqui a dica e o script, testado e pronto para entrar em funcionamento na sua rede!!

sábado, 5 de novembro de 2011

Instalando a Versão Mais Nova do TimThumb

  • O Que é o TimThumb??

O TimThumb é uma pequena aplicação em PHP criada para automatizar o redimensionamento de imagens em páginas web, tarefa especialmente importante na geração de thumbnails para galerias de fotos e imagens. Pode ser usada em qualquer portal cujo servidor suporte PHP, mas tem sido fortemente aplicada em temas para o Wordpress. O próprio Wordpress não usa o TimThumb (ao menos até as últimas versões lançadas até o momento da escrita deste artigo), mas muitos de seus temas o têm usado ostensivamente.

Página do Projeto TimThumb:


  • O Problema da Vulnerabilidade (Falha no TimThumb)

Recentemente, a Avast noticiou ter descoberto uma vulnerabilidade provocada por uma falha no TimThumb que permite a injeção de código malicioso em páginas que utilizam este componente, podendo infectar máquinas clientes e disseminar o código malicioso rapidamente. Mais informações, vide aqui. Uma lista ainda bem incompleta de temas do Wordpress que utilizam o TimThumb está aqui.


  • Como Saber se Uso o TimThumb??

O TimThumb nada mais é do que um arquivo PHP. Nos temas do Wordpress, ele pode ter os seguintes nomes: timthumb.php, thumb.php, image.php, além de alguns outros nomes menos utilizados. O comando abaixo lista possíveis lugares onde o TimThumb pode estar instalado:

cd /var/www [ou o local onde está sua pasta web]
find . | grep thumb.php
find . | grep image.php

Em último caso, você pode varrer todos os arquivos PHP das suas pastas virtuais, com o comando:

find . | grep .php

Anote os arquivos que os comandos geram em suas saídas. Estes são do TimThumb e precisam ser atualizados.


  • Atualizando o TimThumb (Passo-a-Passo)


1- Baixe a versão mais nova do TimThumb em:

http://timthumb.googlecode.com/svn/trunk/timthumb.php

Atente para que o arquivo tem, além do código em si, logo no início, algumas informações de registro, como a versão e a licença. Verifique estes dados na versão que está instalada em cada sistema web seu e valide se a sua versão é mesmo defasada e precisa ser atualizada. A versão pode ser encontrada em uma linha semelhante a esta:

define ('VERSION', '2.8.2');

2- Antes de qualquer coisa, PELAMORDEDEUS, faça backup dos arquivos que você pretende substituir. Mantenha estes backups durante algum tempo, para que seja fácil voltar os arquivos antigos caso algum erro seja detectado com a versão nova.

3- Verifique as permissões que foram dadas a cada arquivo de versão antiga que deve ser substituído. Verifique também o nome de usuário e grupo atribuído a estes arquivos. Para tanto, utilize o comando "ls -l".

4- Copie o arquivo que você baixou, correspondente à versão mais nova do TimThumb, para o mesmo local e com o mesmo nome do arquivo correspondente à versão antiga, de forma a sobreescrevê-lo. Faça isso para cada ocorrência do TimThumb em seus sistemas web. Restaure ao arquivo recém-copiado as mesmas permissões de acesso, nome de usuário e grupo, conforme configurado no arquivo antigo.

5- Teste, teste, teste. Testar nunca é demais.



  • Instalando o TimThumb Pela Primeira Vez!!

Embora este artigo seja inicialmente destinado a ajudar um administrador de sistemas a atualizar o TimThumb, esta seção foi criada para ajudar os desenvolvedores web que acaso venham até aqui e quereiram aprender a usar o TimThumb em seus sistemas.
Antes de instalar, note que o TimThumb é um script PHP e, evidentemente, necessita rodar em um servidor que suporte PHP.
Poucos passos podem propiciar uma boa instalação do TimThumb em seu sistema:

1- Copie o arquivo timthumb.php para seu sistema web, mantendo as permissões, usuário e grupo coerentes com os demais arquivos PHP.

2- No diretório onde o arquivo acima foi copiado, crie duas pastas especiais, que serão usadas para criação, utilização e armazenamento de thumbnails geradas automaticamente pelo TimThumb. Estas pastas são: cache e temp.

3- Defina para as pastas cache e temp a permissão 777. Apenas para estas pastas a permissão terá este valor, e não para arquivos PHP ou qualquer outro trecho de seu sistema!!

4- Verifique outro pré-requisito: é preciso se ter instalada a biblioteca GD Image, e esta precisa ser suportada pelo ser servidor web.


  • Conclusões

Este breve artigo pretende ajudar os administradores a atualizar seguramente um componente interno utilizado em temas do Wordpress (ou em outros sistemas web). Note que o procedimento é válido para qualquer versão, e não apenas no caso mencionado acima, a respeito da falha de segurança de algumas versões do componente. Espero ter ajudado e, claro, COMENTEM!!

domingo, 18 de setembro de 2011

Instalando o Bugzilla no Debian ou Ubuntu

  • Introdução

O Bugzilla é um famoso gerenciador de bugs e pendências para projetos de desenvolvimento, especialmente desenvolvimento de sistemas, criado pela Fundação Mozilla. Suporta múltiplos projetos, diversos componentes por projeto e login de usuários. Suporta envio de anexos e é bastante flexível, além de ser código aberto (e, portanto, gratuito). Você pode baixar e instalar o Bugzilla em sua máquina pessoal, em um servidor de seu projeto, sua empresa ou instituição, ou mesmo modificá-lo e adaptá-lo para seu uso, caso deseje. Este artigo ensina os passos básicos para a instalação comum do Bugzilla, dando ênfase a sistemas derivados do Debian (como Ubuntu). Uma documentação detalhada de cada versão do sistema, incluindo a instalação destas, pode ser encontrada do repositório oficial de documentações (aqui). O artigo é divido em várias seções, uma para cada etapa da instalação, para melhor compreensão e orientação segura do fluxo, descrito passo-a-passo.


  • Verificando Dependências: Perl

O Bugzilla depente da linguagem Perl. Você não precisa saber nada da linguagem e possivelmente ela já vem na sua distribuição. Porém, para verificar isto, digite o comando:

perl -v

Caso o comando rode perfeitamente, o Perl está instalado. A versão mínima do Perl para rodar o Bugzilla deve ser maior ou igual à 5.8.1.


  • Verificando Dependências: Banco de Dados

O Bugzilla pode rodar em uma de três opções diferentes de bancos: MySQL, Oracle ou PostgreSQL. Para verificar as versões de cada um deles, digite:

mysql -V [para o MySQL. Deve ser maior ou igual a 4.1.2]
psql -V [para o PostgreSQL. Deve ser maior ou igual a 8.00.0000]
select * from v$version [para o Oracle. Deve ser maior ou igual a 10.02.0]

Se você tem ao menos um destes bancos e não está usando uma versão incrivelmente desatualizada da sua distribuição, então muito provavelmente seu banco servirá para o Bugzilla. Caso você ainda não tenha um banco de dados, recomendo que instale e use o MySQL. Para tanto, visite o nosso artigo Como Instalar e Configurar o MySQL no Ubuntu.


  • Verificando Dependências: Servidor Web

 Imagino que, a esta altura, você já tenha o Apache Web Server instalado (ou outro servidor web que suporte Perl). O Bugzilla recomenda o uso do Apache e, caso não o tenha instalado, proceda a instalação do mesmo via apt-get, digitando:

apt-get install apache2


  • Instalando e Configurando o Bugzilla

Muito bem, agora você está pronto para começar a instalação do Bugzilla. Baixe-o do portal oficial e copie-o para o diretório onde estão suas páginas do Apache. Descomprima-o lá dentro. Exemplo (para o arquivo da versão 4.0.2 e para o diretório /var/www como sendo o repositório das pastas virtuais do Apache):

mv bugzilla-4.0.2.tar.gz /var/www/
cd /var/www/
tar -zxvf bugzilla-4.0.2.tar.gz

É sempre bom renomear o diretório criado para um nome que você decida ser melhor, caso deseje:

mv bugzilla-4.0.2 bugzilla

Como o Bugzilla precisa escrever nos seus próprios arquivos, você terá de dar permissão para tanto. Verifique o usuário e grupo do Apache que está configurado na sua distribuição (para o Ubuntu, o usuário e grupo são ambos www-data) e modifique as permissões de acesso do Bugzilla para autorizar este usuário e grupo:

chown -R www-data bugzilla/
chgrp -R www-data bugzilla/

Você pode conferir se tudo funcionou com um "ls -l".


  • Instalando e Configurando os Módulos do Perl para o Bugzilla

A não ser que você seja um ávido desenvolvedor Perl, possivelmente seu servidor tem o Perl, porém não tem todos os módulos e bibliotecas necessárias para rodar o Bugzilla em sua plenitude. Neste caso, precisaremos verificar quais módulos você realmente tem e quais precisam ser instalados. Esta etapa deve ser feita cuidadosamente para que não falte nenhum módulo. Felizmente, o programa fornece uma ferramenta para isto. Entre no diretório do Bugzilla (talvez /var/www/bugzilla, ou o local onde você o colocou) e digite:

./checksetup.pl --check-modules

Não fique triste, mas a saída reportará várias linhas em vermelho, indicando os módulos não encontrados (ou encontrados, mas em versões inferiores à esperada). Você pode tentar instalá-los com os comandos sugeridos na própria saída, ou via apt-get. Eu recomendo que instale via apt-get o máximo de módulos possíveis, de sorte a garantir a integridade de seu sistema.
Alguns módulos que possivelmente estarão presentes: CGI.pm, Digest-SHA, TimeDate, DBI, URI, DBD-mysql. Alguns módulos que possivelmente estarão ausentes e podem ser instalados via apt-get são:

Módulo DateTime-Timezone:
apt-get install libdatetime-timezone-perl

Módulos List-MoreUtils e DateTime:
apt-get install libdatetime-perl liblist-moreutils-perl

Módulo Email-Send:
apt-get install libemail-send-perl

Módulo Email-MIME:
apt-get install libemail-mime-perl

Módulo Template (Template-Toolkit):
apt-get install libtemplate-perl

Caso, em seu sistema, outro módulo esteja faltando, o pacote correspondente pode ser encontrado fazendo a pesquisa:

apt-cache search [nome-do-módulo]

Use esta opção acima para achar também os módulos opcionais que deseja instalar (embora não estritamente obrigatórios, os módulos opcionais podem ser desejáveis para um uso mais amplo do Bugzilla).

Após a instalação dos módulos, rode de novo o comando checksetup (conforme mostrado lá em cima) para verificar se ainda há pendências.
Se algum módulo ficar faltando, ou caso esteja instalado, contudo o comando informa que se trata de uma versão inferior à requerida, então é preciso fazer o resto da instalação "à mão", ou seja, com os comandos sugeridos. Neste momento, como você fez o máximo que pôde com os pacotes do Debian (pelo apt-get), então as chances de instalações ou atualizações manuais falharem são de fato muito pequenas. Vide a seção seguinte.


  • Instalando Manualmente os Módulos do Perl para o Bugzilla

Suponhamos que o procedimento da seção acima informa que dois módulos foram instalados corretamente pelo gerenciador apt-get mas não se encontram nas versões mínimas requeridas: Template-Toolkit e Email-MIME (comumente isto acontece em algumas versões do Ubuntu).
Felizmente, o Bugzilla também se preocupou com problemas inerentes a este cenário, e prontificou uma ferramenta que auxiliará a instalação das versões mais novas (ou ao menos as versões corretas e apropriadas) dos módulos em questão. O próprio comando "checksetup.pl" sugere como proceder!! Basta que se digite (em relação a estes dois módulos e estando ainda no diretório do Bugzilla):

/usr/bin/perl install-module.pl Template
/usr/bin/perl install-module.pl Email::MIME

Utilizei estes módulos como exemplo, pois é comum que isto aconteça com eles. Entretanto, o comando acima instalará qualquer módulo, se substituir o "Template" ou "Email::MIME" pelo nome do módulo desejado. Impera ressalvar que, em qualquer condição, só faça uso dessa ferramenta se e somente se a instalação dos módulos pelo seu gerenciador de pacotes (apt-get, aptitude, Synaptic, etc.) não for possível ou acabar instalando versões anteriores à necessária.
Agora, faça figa, cruze os dedos, e verifique novamente como estão os módulos com o mesmo famoso comando ensinado lá em cima:

./checksetup.pl --check-modules

Se estiver tudo branquinho, então esta etapa foi superada!! Parabéns e continue aí embaixo com a próxima etapa!!


  • Instalando os Módulos Opcionais do Perl para o Bugzilla

Esta seção não é rigorosamente necessária para continuar a instalação, mas pode ser necessária dependendo da funcionalidade do Bugzilla que você desejar usar. Se quiser, pule para a seção seguinte. Caso contrário, instale os módulos que você realmente precisa dentre as opções abaixo. Os módulos HTML-Parser e libwww-perl possivelmente já estarão instalados. Seguem os comandos para a instalação dos outros.

Módulos GD e Chart:
apt-get install libchart-perl

Módulos GDTextUtil e GDGraph:
apt-get install libgd-graph-perl

Módulo Template-GD:
apt-get install libtemplate-plugin-gd-perl

Módulo MIME-tools:
apt-get install libmime-tools-perl

Módulo XML-Twig:
apt-get install libxml-twig-perl

Módulo perl-ldap:
apt-get install libnet-ldap-perl

Módulo Authen-SASL:
apt-get install libauthen-sasl-perl

Módulo RadiusPerl:
apt-get install libauthen-radius-perl

Módulo SOAP-Lite:
apt-get install libsoap-lite-perl

Módulos JSON-RPC e JSON-XS:
apt-get install libjson-rpc-perl

Módulo Test-Taint:
apt-get install libtest-taint-perl

Módulo HTML-Scrubber:
apt-get install libhtml-scrubber-perl

Módulo TheSchwartz:
apt-get install libtheschwartz-perl

Módulo Daemon-Generic:
apt-get install libdaemon-generic-perl

Note que alguns módulos não estão, aparentemente, disponíveis via gerenciador de pacotes. Assim, como na seção anterior, caso um dos módulos não seja encontrado ou não esteja na versão requerida, ele pode ser instalado diretamente pelo comando "install-module.pl", conforme descrito acima.


  • Instalando o Módulo do Perl no Apache2

Se o seu Apache2 já roda programas escritos em Perl, então talvez este passo também não seja necessário. Caso contrário, você precisa do módulo de Perl para o Apache. Este módulo faz com que o Apache aprenda a repassar para o executor Perl o código escrito em arquivos solicitados. Sem o módulo, os arquivos de código Perl serão tratados como arquivos de texto puro e serão simplesmente listados na tela de seu navegador.
Verificando se você tem o módulo Perl do apache:

ls /etc/apache2/mods-available/
[deve aparecer o arquivo perl.load na listagem]

Verificando se o módulo está ativo:

ls /etc/apache2/mods-enabled/
[deve aparecer o arquivo perl.load na listagem]

Caso o arquivo mencionado não esteja lá, o módulo não está instalado.
Instalando o módulo Perl do Apache2:

apt-get install libapache2-mod-perl2

Agora o arquivo deve aparecer em ambos os diretórios. Não se esqueça de que, sempre que uma mudança como estas é feita, é preciso que se reinicie o Apache. Você pode deixar para fazer isto depois, quando terminar de configurá-lo para o Bugzilla. Porém, caso deseje testar o carregamento do módulo, digite:

service apache2 restart

Você pode rodar de novo o verificador "./checksetup.pl --check-modules" e observar a linha "mod_perl" para averiguar se a versão do módulo do Perl para o Apache é maior ou igual à requerida. Embora esta linha esteja entre os módulos opcionais, ela é imprescindível caso você pretenda usar o Apache como servidor web através do módulo citado.


  • Gerando Automaticamente o Arquivo localconfig

A instalação está quase no fim!! Agora o seu Bugzilla precisa, para rodar perfeitamente, de acesso ao banco de dados. Para tanto, o programa lê um arquivo de configuração denominado "localconfig". Se você procurar este arquivo (e tiver feito tudo conforme indiquei até aqui!), notará que ele não existe (ainda). Não se preocupe, ele é gerado automaticamente pelo mesmo programa "checksetup.pl", porém rodado agora sem o parâmetro "--check-modules". Portanto, execute:

./checksetup.pl

[Quase no final deve surgir esta mensagem:]
This version of Bugzilla contains some variables that you may want to change and adapt to your local settings. Please edit the file ./localconfig and rerun checksetup.pl.

Muito bem!! Seu arquivo foi gerado!! Mas ainda está com as opções padrões... precisamos configurar qual schema (database) e qual usuário de banco o Bugzilla usará.


  • Criando Usuário de Banco e Schema (Database)

Este é um bom momento para se criar um usuário do banco de dados para o Bugzilla (jamais, jamais, sob qualquer hipótese, use o usuário "root"!!!), como também o seu Schema (ou Database). Como este artigo recomenda o uso do MySQL, abaixo estão os comandos do MySQL para executar estas funções. Caso você esteja usando o Oracle ou o PostgreSQL, busque na documentação de seu banco a maneira apropriada de se realizar estas operações.

Criando um usuário no MySQL:

mysql -u root -p
[digite a senha do banco, definida na instalação do mesmo, lá em cima]

mysql> create user 'bugzilla'@'localhost' identified by 'password';
[password é a senha que você deseja colocar, bugzilla é o nome do usuário (de até 16 caracteres). Não use nada óbvio!!]

Criando um schema para o Bugzilla:

mysql> create database bugzilla character set = 'utf8';
["bugzilla" será o nome do schema. Use o nome que quiser]

Concedendo privilégios para o novo usuário sobre o novo schema:

mysql> grant all privileges on bugzilla.* to 'bugzilla'@'localhost';


  • Configurando o Arquivo localconfig

Edite o arquivo "localconfig", de forma a acrescentar os dados do banco de dados e permitir o acesso correto do Bugzilla ao mesmo.

vi localconfig

Configure as opções:

$webservergroup = 'www-data';
[ou o nome do grupo linux usado pelo seu Apache]

$db_driver = 'mysql';
[pode ainda ser "oracle" ou "Pg", conforme o caso]

$db_host = 'localhost';
[caso acesse o banco de outra máquina, coloque o endereço do host aqui]

$db_name = 'bugzilla';
[ou o nome do schema ou database que você escolheu]

$db_user = 'bugzilla';
[ou o nome do usuário do banco que você escolheu]

$db_pass = 'password';
[ou a senha do usuário do banco que você escolheu]

Possivelmente as outras opções podem ficar como estão. Para testar se está tudo certinho e finalmente criar todas as suas tabelas dentro do banco de dados, rode novamente o programa:

./checksetup.pl

Se tudo correr bem, você verá um monte de tabelas sendo criadas. Ao final, serão solicitados dados para o administrador do Bugzilla, a saber:

- e-mail do Administrador do Bugzilla;
- Nome (real) do Administrador do Bugzilla;
- Senha (segura, por favor!!) do Administrador do Bugzilla.

Parabéns, seu Buzilla está configurado!! Resta apenas ensinar o Apache a encontrá-lo, que é seu último e derradeiro passo!!
NOTA: Uma vez terminada a configuração total, você poderá, via interface web do Bugzilla, criar mais usuários, inclusive outros usuários com perfil de Administrador.


  • Configurando o Servidor Web para o Bugzilla

A equipe do Bugzilla recomenda que se use o Apache Web Server. Este tutorial tem indicado o Apache desde o início; portanto, será explanada apenas a configuração deste servidor web. Se você usa, por qualquer motivo, outro servidor web, busque em suas documentações as configurações equivalentes.

Rode a página de teste do Bugzilla:

http://[seu servidor]/[pasta virtual]/testagent.cgi
[troque "seu servidor" pelo endereço ou IP de seu servidor, e "pasta virtual" pelo diretório onde o Bugzilla foi instalado]
Exemplo:
http://localhost/bugzilla/testagent.cgi

Se aparecer somente o texto "OK", então provável é que esteja tudo funcionando. Se o código do arquivo CGI for listado na tela, então o Apache ainda precisa entender melhor o Bugzilla. Possivelmente é isto que irá acontecer.

Existem duas maneiras de se configurar o Apache para rodar o Bugzilla: via mod_cgi e via mod_perl. Neste tutorial vamos varrer o mod_cgi, por ser mais econômico na memória e mais flexível (suporta múltiplas instâncias no mesmo servidor).
Abra o arquivo de configuração de seu Apache (apache2.conf ou httpd.conf, dependendo de sua distribuição):
vi /etc/apache2/apache2.conf

Acrescente as linhas:

<Directory /var/www/bugzilla>
AddHandler cgi-script .cgi
Options +Indexes +ExecCGI
DirectoryIndex index.cgi
AllowOverride Limit FileInfo Indexes
</Directory>
[troque o "/var/www/bugzilla" pelo diretório correto onde o seu Bugzilla está instalado]

Reinicie o Apache Web Server (lembra que eu pedi que você esperasse por este momento bem lá em cima?? Pois é, agora chegou a hora!!):

service apache2 restart

 Rode o "checksetup.pl" para pequenos ajustes automáticos. Este programa pode ser rodado a qualquer momento que se fizer necessário, sem prejuízo algum:

./checksetup.pl

Acesse novamente a página de testes lá em cima, no início desta seção. Se tudo funcionou, ela vai listar apenas uma linha contendo o texto:


OK mod_cgi

Parabéns!! Seu Bugzilla está instalado e rodando!! Acesse-o pelo endereço:

http://[seu servidor]/[pasta virtual]/
Exemplo:
http://localhost/bugzilla/

Se preciso, dê um Ctrl+F5 (função refresh ou recarregar do navegador) na página para ela acordar. Deve aparecer uma tela chamada "Main Page" e dizendo, sorridente, "Welcome to Bugzilla"!!

Agora você vai desejar certamente descansar um pouco, tomar um café, ou um chá, ou um mate, comentar este artigo dizendo como ele te ajudou tanto (ehehe) e, enfim, começar a cadastrar seus projetos e os componentes internos dos mesmos. Para tanto, clique em "Login", digite o e-mail que você informou para o Administrador, a senha que foi igualmente informada, e siga as instruções da página que surgirá.


  • Conclusões

Este foi um artigo um tanto quanto extenso que procurou deixar de forma bem clara e simples todos os (muitos!) passo da instalação completa do Bugzilla. Embora os passos sejam numerosos e a quantidade de tecnologias utilizadas seja grande e diversificada, o Bugzilla é amigável e vem com programas internos que facilitam e automatizam muito todo o processo.
A documentação é muito clara, porém não está em português. Uma pendência na documentação, no entanto, é que, com o caráter generalista que lhe é de costume, ela deixa passar muitos comando que podem instalar mais seguramente módulos e bibliotecas, como os comandos que utilizam o gerenciador de pacotes do Debian, o apt-get.
Evidentemente, outras distribuições de Linux, com seus próprios sistemas de pacotes e seus gerenciadores, substituirão os comandos informados aqui por comandos bem semelhantes. Assim, espero, com este artigo, ter ajudado a aprimorar o processo de instalação do Bugzilla e colaborar com aqueles que precisam de uma instalação confiável, detalhista e segura, onde todos os passos são avaliados e explicados.
Se você realmente gostou, deixe seu comentário e experiência. Poderá estar, com isto, ajudando a muitos outros que nos visitam em busca de informações e ajuda.

Como Instalar e Configurar o MySQL no Ubuntu

O MySQL é talvez o mais popular banco de dados do mundo. Gratuito e de código aberto, certamente, ainda que você não o use nos sistemas que você desenvolve, você precisará de ferramentas (muitas abertas, outras nem tanto) que demandam a utilização deste banco de dados. Em geral isto é uma coisa boa porque o MySQL é um banco rápido e leve. Este artigo expõe, de forma simples e direta, como instalar o MySQL em sistemas baseados em Debian, como o Ubuntu.
Apenas por curiosidade, segue uma lista de algumas ferramentas comuns que usam o MySQL, das quais talvez você necessite em seus projetos ou em sua empresa:

MediaWiki, ferramenta gratuita para criação de páginas Wiki.
Wordpress, ferramenta gratuita para criação de blogs.
Bugzilla, ferramenta gratuita para controle de bugs de um projeto.
FengOffice, gerenciador de projetos não tão gratuito.
OTRS, famoso gerenciador de tickets, muito útil para serviços de helpdesk e suporte.


  • Instalando o MySQL

Entre como administrador (root) do sistema e digite:

apt-get install mysql-server
(Quando for solicitado, defina uma senha segura de root do MySQL. Não deixe esta senha em branco!!)

O pacote "mysql-server" é, na verdade, um meta-pacote que aponta para a versão mais nova do banco disponível nos repositórios de sua distribuição.
Isto instala apenas o servidor do banco, ou seja, o banco em si. Este servidor vem com um cliente em modo texto bem simples, mas não instala diretamente nenhuma ferramenta gráfica de administração e manipulação do banco.

Nota 01: O download completo do banco e as principais dependências podem chegar a mais de 24MB e a instalação dos mesmos ocupará mais de 60MB de disco. Verifique a disponibilidade de seus discos.

Nota 02: Embora seja possível, evite instalar a versão disponível no portal do banco, a menos que você seja especialista no assunto, pois esta versão vem com opções de configurações consideradas inseguras.


  • Instalando Clientes Gráficos (GUI) do MySQL

É claro que só o banco e as ferramentas em modo texto disponíveis no servidor não vão deixar um DBA completamente feliz... neste caso, especialmente para uso profissional, será preciso que se instalem ferramentas gráficas que facilitem o trabalho de consultas, criação de queries e scripts, administração do banco de dados, etc.

IMPORTANTE: Recomenda-se que estas ferramentas abaixo sejam instaladas nos clientes, e não no servidor. Isto quer dizer: não as instale na máquina que vai servir o banco, mas sim nas máquinas pessoais de cada usuário ou administrador do banco.

1- Uma ferramenta simples, gratuita e ágil é o MySQL Query Browser, que pode ser instalada com o comando:

apt-get install mysql-query-browser

Com ela, você pode:

- Criar queries e scripts;
- Salvar históricos;
- Autocompletar comandos;
- Depurar scripts;
- dentre muitas outras funcionalidades!!


2- Muitas vezes, a instalação deste programa inclui automaticamente outro bem útil, o MySQL Administrator. Caso não o inclua na sua distribuição, instale-o com o comando:

apt-get install mysql-admin

Com o MySQL Administrator, você pode:

- Gerenciar usuários e bancos;
- Fazer e restaurar backups;
- Parar e reiniciar o banco;
- Obter informações críticas sobre o sistema onde o banco roda;
- Configurar grande parte dos parâmetros do banco;
- Medir o desempenho do banco;
- Visualizar logs;
- Acompanhar replicações;
- dentre muitas outras coisas!!


3- Ainda uma outra ferramenta extremamente útil na suíte de ferramentas gratuitas do MySQL é o MySQL Workbench, que pode ser instalado com o comando:

apt-get install mysql-workbench-gpl

Esta ferramenta possibilita:

- Muito do que as ferramentas anteriores permitem, adicionando:
- Gerenciamento completo de múltiplas instâncias do MySQL;
- Engenharia reversa do schemas e/ou scripts para geração de modelos EER (Modelos de Entidade-Relacionamento, aprimorados para suportar subclasses e superclasses, união de objetos, especialização e generalização).
Com as ferramentas acima, qualquer profissional estará bem munido para usar o MySQL tranqüilo e feliz!!

Espero ter ajudado, pessoal!! Boa sorte a todos e, claro, COMENTEM (e, se quiserem, cliquem no maiszinho aí embaixo!!)

sábado, 17 de setembro de 2011

Como Criar uma Caixa de Seleção (Lista Drop-Down) no OpenOffice Calc

Este artigo mostra um recurso simples e muito poderoso do OpenOffice (ou LibreOffice, ou Br-Office, como se queira...): como transformar uma célula da planilha do Calc em uma caixa de seleção (também chamada lista de seleção, caixa drop-down, lista drop-down, etc.), populada com valores pré-definidos.
Esta funcionalidade não é exclusiva do OpenOffice, ela existe em outras planilhas eletrônicas. Porém, o OpenOffice tem uma maneira elegante de tratar os dados e isolá-los do conteúdo de sua planilha, mantendo a flexibilidade e facilidade de uso.


PASSO 01: Selecione uma ou mais células onde será criada a caixa de seleção desejada, conforme a Figura 01.
 
Figura 01: Células selecionadas para aplicação da lista de dados.


PASSO 02: Acesse o menu "Dados" ("Data", se estiver em inglês), opção "Validade" ("Validity"), conforme a Figura 02.
 
Figura 02: Acessando a funcionalidade Validade no menu Dados.


PASSO 03: Clique na caixinha "Permitir", onde está selecionada a opção "Todos os Valores", e mude-a para "Lista". Imediatamente aparecerá um quadro branco, ainda vazio, disposto na parte de baixo da janela, com o nome "Entradas". Também surgirão algumas opções padrões selecionadas. Mantenha selecionadas as opções "Mostrar células em branco" e "Mostrar lista de seleção", caso deseje. Evidentemente, ao menos a segunda deverá estar selecionada, para que a lista não fique escondida. Vide Figura 03.
 
Figura 03: Tela para a criação da lista de dados da caixa de seleção Drop-Down.

PASSO 04: Escreva na caixinha branca vazia todas as opções que você desejar, tomando o cuidado de colocar uma opção em cada linha, conforme mostra a Figura 04. Terminada a inserção dos dados em sua lista, clique no botão OK.
 
Figura 04: Preenchendo os dados.

Beleza: a sua lista ou caixa de seleção Drop-Down está criada e pronta para ser usada, conforme mostra a Figura 04. Uma vez de retorno à planilha, as opções podem ser acessadas clicando-se na setinha para baixo ao final de cada célula configurada com a lista de dados, conforme mostra a Figura 05.
 
Figura 05: Selecionando os dados presentes na lista.


  • Alterando os Valores
Se, após o final deste processo, você notar que é preciso alterar algum valor ou inserir novas opções que se fizerem necessárias, basta que se selecione todas as células cujos dados devem ser alterados e se repita o procedimento, ou seja: vá em "Dados", opção "Validade" e, na lista que já estará pronta, faça as inserções ou alterações desejadas.
Caso um ou mais dados existentes sejam alterados, certifique-se de remarcá-los nas células onde eles foram selecionados, para que as células tenham seus textos atualizados.
Não se esqueça de que as alterações dos dados da lista só serão aplicadas às células que forem marcadas (selecionadas) quando da execução do procedimento!! As outras listas das células não marcadas permanecerão como estavam antes.


  • Conclusões
Este artigo simples e breve mostrou como criar uma caixa de seleção de dados no OpenOffice. Note que este programa, diferentemente de alguns de seus concorrentes, armazena os dados isolados da planilha, o que gera para o usuário mais conforto e melhor organização, especialmente na construção de planilhas complexas e robustas.

Espero que o artigo tenha ajudado!! Como sempre, espero que todos COMENTEM!! :-)

domingo, 4 de setembro de 2011

Testando o Som com JavaSound

A API JavaSound é responsável pela execução de som no sistema operacional através de um dispositivo de som (placa de som) devidamente instalado. O JavaSound é uma API relativamente de baixo nível e não contém implementações de algoritmos sofisticados que ultrapassem a manipulação de sons em si, como um recurso automático para tocar arquivos de som comprimidos ou recursos para converter entre formatos de som com compressão de dados, filtragem de banda, análise de espectro, etc. Claro que tudo isso pode ser implementado e realizado usando o JavaSound, mas não vem pronto de cara.
O JavaSound possui basicamente duas formas de tratar os sons: via streams de áudio formatadas (chamada sampled) e via sinais MIDI. Cada qual possui seus próprios objetos e funcionalidades.


  • Testando o som com JavaSound

Para se testar o som, ou seja, para se verificar se o seu equipamento de som na máquina em que seu programa está rodando está realmente acessível ao Java, utilize estes comandos:

// Testando se é possível tocar MIDI
MidiSystem.getSequencer();

// Testando se é possível tocar áudio (wave)
AudioSystem.getMixer(null);

Note que foram testadas duas coisas: áudio e MIDI. Se tudo correr bem, estas linhas rodarão perfeitamente. Isto significa que seu sistema é capaz de prover ao menos um seqüenciador MIDI para receber sinais deste protocolo e ao menos um Mixer capaz de receber pelo menos uma entrada de áudio padrão. O argumento "null" na última linha significa que desejamos obter o Mixer padrão, e não Mixers específicos e alternativos, que podem ou não estar disponíveis, dependendo da placa de som.
Se a primeira linha falhar, você receberá um MidiUnavailableException. Caso a segunda falhe, você receberá um SecurityException, indicando que não é possível encontrar ou não se tem permissão de escrita para o dispositivo (isto pode acontecer, por exemplo, se já tiver algum outro processo escrevendo áudio para o Mixer padrão no momento em que você o testa).
Lembre-se de testar ambos os casos separadamente, para tratar cada problema de modo isolado.

Bom, espero ter ajudado. Qualquer coisa, COMENTEM!!

domingo, 28 de agosto de 2011

Como Personalizar a Mensagem e a Tela do KDM

Você gostaria de mudar a tela de login das máquinas de sua empresa?? Gostaria de mudar o texto de boas-vindas?? Gostaria de personalizar a tela das máquinas de seu laboratório?? Entenda um pouco mais sobre como fazer isto neste artigo!!

  • O Que é o KDM??

O KDM (K Display Manager) é o gerenciador de login da suíte do KDE. Conforme o GDM (do Gnome) ou o XDM (do X), ele é responsável por fornecer ao usuário uma interface gráfica pela qual seja possível entrar com o nome do usuário e senha, selecionar o gerenciador de janelas preferido (KDE, Gnome, etc.) para a sessão e fazer o login gráfico diretamente. Ainda é possível se fazer várias outras coisas, como desligar ou reiniciar o sistema, reiniciar o X, fazer login no console, exibir fotos dos usuários, etc.
O KDM tem um sofisticado suporte a temas que permite uma personalização verdadeiramente radical de toda a interface. Um manual completo sobre o KDM e todas as suas possibilidades administrativas pode ser encontrado livremente no KDM Handbook, da documentação do KDE. Excelentes temas podem ser baixados gratuitamente do portal http://kde-look.org/, na seção de temas do KDM. Particularmente, eu gosto muito do SteampunK, que tem também uma versão para o KSplash (KSplash é o programa responsável pela tela de inicialização do KDE, aquela animação que roda enquanto a sessão está sendo carregada. Em geral, temas do KDM são acompanhados por temas do  KSplash, para maior integração gráfica).
Nosso objetivo deste artigo é muito mais pontual: estamos interessados em ajustar as mensagens do KDM Greeter, que é a telinha de boas-vindas que aparece para o usuário.


  • Configurando o KDM

As configurações básicas do KDM são dispostas no arquivo (com acesso de escrita apenas para root):

/etc/kde4/kdm/kdmrc
(substitua o "kde4" por "kde3" ou simplesmente "kde", de acordo com a sua distribuição e a versão do KDE que você está usando).

Este arquivo-mestre contém diversas opções de configurações, separadas por seções. A seção importante para se configurar a tela inicial e a mensagem de boas-vindas se chama "[X-:*-Greeter]". Uma abordagem detalhada de todas as opções disponíveis para cada seção pode ser encontrada no Capítulo 5 do manual do KDM.

IMPORTANTE: utilize este arquivo para fazer configurações gerais. Note que a seção acima mencionada (o Greeter, ou seja, a tela de boas-vindas) é totalmente sobrescrita pelas definições dos temas!! Se você usa algum tema, o que eu recomendo que faça, então não perca tempo configurando esta seção, mas sim alterando as definições da tela de boas-vindas do tema.


  • Configurando e Personalizando um Tema do KDM

Os temas do KDM podem ser baixados pela rede e instalados através das configurações do KDE. É preciso se ter a senha de administrador para instalar um tema, ainda que não se esteja logado como root. No KDE3, o programa gráfico que gerencia as configurações do KDE é o KControl (KDE Control Center); no KDE4, o KControl foi descontinuado e substituído pelo System Settings. Para uma lista de novos programas e substitutos implementados na mudança do KD3 para o KDE4, vide esta página ou esta outra.
Uma vez instalado um tema através do System Settings, o arquivo do tema é descomprimido e colocado no diretório de temas do KDM:


/usr/share/kde4/apps/kdm/themes/
(substitua o "kde4" por "kde3" ou simplesmente "kde", de acordo com a sua distribuição e a versão do KDE que você está usando).


Para cada tema instalado, é criado um diretório novo com o nome do tema dentro deste diretório de temas e seus arquivos são depositados ali. Este é o local onde você deve olhar caso queira substituir alguma imagem pelo logo de sua empresa, instituição ou laboratório (especialmente a imagem de fundo).
As imagens de fundo, em geral, ficam no diretório "wallpapers" e podem ser várias, dependendo das resoluções que o tema suporta. Assim, se seu tema se chama "xyz", procure a imagem de fundo em:

/usr/share/kde4/apps/kdm/themes/xyz/wallpapers

Note que é preciso reiniciar o KDM para que ele absorva todas as configurações novas. Para tanto, faça logout de todos os usuários e reinicie o X (Ctrl + Alt + Backspace) ou, como root, reinicie o serviço na mão:

service kdm stop
service kdm start

Para se alterar a mensagem de boas-vindas, vá ao diretório de instalação do tema (conforme mostrado acima) e edite o arquivo:

vi tema.xml
(onde "tema" é o nome do tema, sempre em letras minúsculas)

Este é um arquivo XML que basicamente trata da disposição dos itens gráficos da tela de login, o chamado Greeter. É o coração do tema. Procure a linha responsável pelo item de nome "label":

<item type="label">
    <pos anchor="c" x="58%" y="82%"/>
    <normal font="Sans Bold 12" color="#a07358"/>
    <text>%h - %c</text>
</item>

A maior parte das tags se referem a posicionamento e formatação do texto, e talvez não precisem ser mudadas. A mensagem está na tag "text" e contém as informações:

%h - nome do host (da máquina)
%c - data e hora local.

Este campo aceita qualquer caracter, letra, número ou frase, onde algumas variáveis podem ser adicionadas:

%%    O caracter %
%c    Data e hora do relógio
%d    Nome da variável de ambiente DISPLAY do sistema (verifique digitando "echo $DISPLAY", sem aspas, no terminal)
%h    Nome da máquina (obtido do gethostname output)
%m    Nome da máquina (obtido do comando uname)
%n    Nome do node (obtido do comando uname)
%o    Nome do Domínio (obtido do getdomainname output)
%r    Nome do Release (obtido do comando uname)
%s    Nome do Sistema (obtido do comando uname)
%t    Quantidade de segundos restante até que o login agendado seja realizado, com o devido plural na forma de "segundos" do padrão i18n.
%u    Nome do usuário para o login agendado
_    Força que o próximo caracter seja um acelerador

Use estas variáveis para personalizar sua mensagem de boas-vindas e para informar dados úteis, como o nome da máquina, a data e hora, o nome do sistema, etc. Se estas informações ficarem muito grandes para o layout do tema, tente redimensionar o texto, mudando o tamanho da fonte. Não altere o layout do tema, pois ele certamente é complexo, depende de figuras e outros itens e dará uma boa dor-de-cabeça se ficar quebrado!!

Um tutorial completo sobre todos os itens presentes neste arquivo XML está nesta página do manual do KDM.


  • Conclusões

Este artigo abordou diversos importantes detalhes sobre a configuração do KDM e de seus temas. Com isto, torna-se possível se utilizar um tema gratuito e personalizá-lo para sua empresa, instituição ou laboratório. É possível se trocar figuras e textos facilmente. Com as referências incorporadas ao texto e a teoria explanada, uma pessoa interessada pode inclusive criar facilmente seu próprio tema do KDM, de forma a personalizar sofisticadamente a tela de login de suas máquinas.
Espero ter sido útil e ter ajudado!! Claro, continuem visitando o Pajé e, sempre que possível, COMENTEM!!!

domingo, 14 de agosto de 2011

A História de João: Dicas de Trabalho e Promoção na Informática

Observem o seguinte texto (inspirado em um famoso conto da literatura):

João começou a trabalhar com informática quando ainda na faculdade. Naquela época, ele era estagiário. Trabalhava 6h/dia. Chegava às 8:30 e saía 15:00. Almoçava em 30 minutos e estava feliz. Ao se formar, tornou-se júnior. Aumentou o seu salário. Trabalhava 8h/dia. Almoçava em 15 minutos e estava ainda mais feliz. Após dois anos assiduamente dedicados à empresa, nunca havia faltado. Nunca se atrasou. Trabalhava 10h/dia. João foi reconhecido pelo seu gerente que, conversando com seus superiores, promoveu-o à Pleno. Trabalhava 12h/dia. Estava felicíssimo. Almoçava em incríveis 5 minutos. Em pouco tempo João se sagrou Sênior. Foram anos de dedicação à empresa. Agora já não mais almoçava. Trabalhava 15h/dia, sempre atento às "forças-tarefas" dos fins de semana. Não tinha mais vida. Estava em inefável júbilo. Apenas mais um ano e havia otimizado como nunca sua produtividade: dormia na empresa, excluíra a vida social, não trocava muito de roupa, só comia aos domingos e bebia água uma vez por dia. Uma bela manhã, João começou a sentir-se estranho. Uma felicidade ainda maior lhe invadia o peito. Uma dor alegre lhe impingia a face... seus olhos secos, suas mãos hirtas... João caiu da cadeira. Sua pele tornou-se metálica. Com o dedo na tomada, seus órgãos se esverdeavam. João virou uma máquina servidora.


Para que esta história triste não aconteça com você, fique atento às seguintes dicas do Pajé, de forma a garantir seu emprego com segurança e garantir a sua saúde por longos anos:


  • Qualifique-se: nunca confie que os conhecimentos que você tem são suficientes para o trabalho que você faz. Se seu emprego não reconhece um profissional qualificado, então seus superiores não estão interessados em criar produtos de qualidade ou oferecer serviços bons, mas sim em vender barato e incrementar os lucros. Neste caso, qualifique-se assim mesmo, destacando-se e procure um emprego que valorize de fato o profissional que você é.

  • Atualize-se sempre: vivemos em um mundo onde a tecnologia muda o tempo todo e, muitas vezes, grandes tecnologias tornam-se obsoletas rapidamente, sendo substituídas por outras. O profissional que acompanha esta dinâmica sabe antever o que vem para o futuro e sabe se tornar sempre apto e capaz de dominar rapidamente as novidades do mercado. Para se atualizar, leia sempre de tudo: livros, revistas, portais de notícias e blogs de tutoriais como este!

  • Seja o que for ou vier a acontecer, nunca abandone seus projetos pessoais.

  • Mantenha sempre seus contatos atualizados. Faça amigos, nunca inimigos. Todos precisam de todos.

  • Invista em conhecimento: compre livros, tenha seu computador em casa com o ambiente que você precisa para trabalhar sempre funcionando, atualizado e operacional, tenha projetos técnicos em casa, experimente e saiba realizar suas tarefas fora da empresa. Ser competente é também ter independência.

  • Contribua com algo voluntário. Desde o código livre até ações sociais de voluntariado, você só tem a ganhar.

  • Nunca se deixe escravizar pelo seu emprego ou por uma oportunidade. Sempre haverá, para você, um lugar bem melhor do que aquele que lhe faz infeliz...

  • Confira e teste atentamente tudo o que você faz, especialmente em meio às crises técnicas. Lembre-se: para tudo na informática, há sempre uma solução alternativa. Esforce-se por ser um profissional confiável e de qualidade.

  • Lembre-se sempre: nem todos que estão ao seu lado são seus amigos. Nem todos que estão distantes de você são indiferentes... no final das contas, ter um bom amigo é mais importante do que ter milhares de telefones na agenda do celular...

Bom, este não é um tutorial técnico propriamente, mas é um manual para lhe ajudar no trilho do sucesso. Espero realmente ter contribuído!!

quinta-feira, 4 de agosto de 2011

Como criar um Pool de Conexões no JBoss

Este artigo ensina de maneira prática e rápida como criar um pool de conexões para qualquer banco de dados no JBoss, independente das aplicações. O pool criado terá suporte a transações e poderá ser usado de qualquer aplicação através da tecnologia JNDI. Ele será inicializado quando o JBoss iniciar e aguardará as solicitações das aplicações para compartilhar uma conexão. Note que este assunto é muito vasto e não pretendo exaurí-lo, mas sim criar um tutorial fácil e simples para que seu pool funcione.


  • Instalando o Driver do Banco de Dados no JBoss

O driver de seu banco de dados é simplesmente uma biblioteca jar. Basta copiá-lo para um dos seguintes locais (sendo JBOSS_HOME o diretório de instalação de seu JBoss):


JBOSS_HOME/common/lib
[aqui funcionará para o JBoss em qualquer situação ou configuração. É este local que eu recomendo ficarem os drivers dos bancos de dados que você tem]

Outras opções:

JBOSS_HOME/server/default/lib
[funcionará para a configuração default]

JBOSS_HOME/server/minimal/lib
[funcionará para a configuração minimal]
 
JBOSS_HOME/server/standard/lib
[funcionará para a configuração standard]

JBOSS_HOME/server/all/lib


  • Nomeando o Arquivo do Pool de Conexões

Vamos criar um arquivo que descreva a conexão com seu banco de dados e crie o seu pool. Este arquivo deve se chamar "aplicacao-banco-ds.xml", onde aplicacao é o nome do sistema que deve utilizar suas conexões (não obrigatório) e banco é o nome do sistema de gerenciamento de banco de dados (SGDB) a que o arquivo se refere (obrigatório). O importante é que o nome de seu arquivo termine com "-ds.xml", indicando que é um arquivo de um DataSource. Exemplos de nomes de arquivos são:

sistemas01-mysql-ds-xml
auditoria-oracle-ds.xml
sqlserver-ds.xml

O JBoss suporta vários pools de conexões, inclusive conexões a bancos diferentes. Assim, você pode criar quantos destes arquivos você quiser ou precisar. Note que as conexões só serão realmente abertas quando uma aplicação solicitar ao JBoss a conexão. Enquanto não houver solicitação, o DataSource existirá, porém sem conexão ativa.


  • Conteúdo do Arquivo de Pool de Conexões do JBoss

Suponhamos que você tenha criado um arquivo chamado "mysql-ds.xml" (ou qualquer outro nome que você deseje). O conteúdo do arquivo deverá ser:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MysqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/database</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>nomeusuario</user-name>
<password>senhausuario</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>10</max-pool-size>
<idle-timeout-minutes>5</idle-timeout-minutes>

<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- should only be used on drivers after 3.22.1 with "ping" support    -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

OBS: Mantenha uma tag em cada linha. Talvez a listagem acima quebre muitas tags em mais de uma linha, dependendo do seu monitor e resolução. Como se trata de um arquivo XML, então a quebra de linha é entendida como um caracter, e pode provocar erros na interpretação (
parser) do arquivo.

Entendendo as tags do arquivo:

datasources = Indica que aqui serão listadas informações para completar um DataSource, ou seja, uma fonte de conexões. Existem 3 tipos de DataSources, basicamente:

no-tx-datasource - um DataSource que não suporta JTA Transactions (transações).
local-tx-datasource - um DataSource que suporta transações com JTA, mas não suporta two phase commit.
xa-datasource - suporta transações com JTA e two phase commit usando javax.sql.XADataSource.



O que você precisará, na maioria das vezes, é o local-tx-datasource. Ainda que você não use transações diretamente, esta é a melhor opção.


local-tx-datasource = É a fonte de conexões em si.

jndi-name = O nome do JNDI que você usará para pedir uma conexão quando dentro de sua aplicação. Escolha um nome claro e simples. Este nome é a sua referência para obter a conexão dentro de qualquer aplicação rodando em seu JBoss.

connection-url = É a URL de conexão com o banco. Cada banco tem uma URL de um jeito. Uma lista das URLs de bancos de dados mais comuns está neste tutorial aqui, na seção "Set up specific DataSources". Não coloque aqui o nome do usuário do banco.

driver-class = A classe de seu Driver. Consulte o manual de seu driver para saber qual a classe que deve ser colocada aqui.

user-name = O nome do usuário do banco que será usado. Não coloque este nome diretamente na URL lá em cima!! Deixe para colocá-lo aqui, nesta tag.

password = Sim, aqui você escreverá a senha do usuário do banco. CUIDADO: se seu JBoss está em algum lugar acessível pelos usuários da rede, mesmo que somente como leitura, a senha poderá ser lida facilmente (está em texto puro), o que representa uma grande vulnerabilidade em seu sistema. Zele pelas permissões de acesso a este arquivo!!

min-pool-size e max-pool-size = representam, respectivamente, o valor mínimo e máximo de quantas conexões devem ser mantidas abertas. Assim que uma conexão é solicitada, ela é aberta e será mantida aberta se o total de conexões abertas é menor ou igual ao min-pool-size. Controle estes dados atentamente, de acordo com a carga de uso de seu sistema. Mantenha valores diferentes para ambientes de desenvolvimento e produção ou para sua máquina local.

idle-timeout-minutes = O valor em minutos máximo de ociosidade para que uma conexão seja fechada. Se uma conexão alcançar este valor de tempo sem ser utilizada, ela será fechada. Isto poupa recursos e memória da máquina. Assim como no caso acima, use-o com cuidado e de acordo com o perfil de seu sistema. Recomendo valores diferentes para máquinas locais, servidores de desenvolvimento e de produção.

As outras tags citadas acima são específicas do MySQL e estão comentadas.


  • Testando Conexões (DataSources) Diretamente no JBoss

Bom, vamos testar tudo, né?? Sem testes, como garantiremos que este trabalho todo funcionará?? Com o JBoss, é possível testar os DataSources diretamente na interface administrativa JMX-Console Admin. Dúvidas sobre esta interface?? Consulte nosso artigo Trocando a Senha do Administrador do JBoss (JMX-Console Admin).
Acesse o JMX-Console e faça login. Na tela de administração, acesse a opção:

Resources --> Datasources

Conforme mostra a Figura 01. Deve aparecer uma listagem com os seus DataSources, exibindo o nome de cada um deles (JNDI name), o tipo de DataSource, o status ("Up" significa que está funcionando) e um botão "Delete" para apagá-lo.


Figura 01: Tela de administração de DataSources do Administrador do JBoss.


Clique no nome do DataSource e logo surgirá uma nova tela, com todas as opções de administração do mesmo. Vá até a última aba (Control) e selecione "Test Connection" (Figura 02).


Figura 02: Controle administrativo do Pool de Conexões.


Se a conexão funcionou, então a sua tela vai mostrar uma linda mensagem de sucesso verdinha, conforme a Figura 03.


Figura 03: Tela de teste de conexão, após realizado.


Existe outra maneira de se testar a conexão, que é obtendo um objeto DataSource ao se fazer um Lookup a partir do InitialContext. Mas isto fica para outro artigo, onde poderemos detalhar melhor estes passos.


  • Dicas de Boas Práticas

1- Nunca crie pool de conexões dentro das aplicações, mesmo que elas usem um framework em especial, como o Hibernate. O JBoss serve para isso e ele oferece flexibilidade e recursos para as mais diferentes situações e cenários.

2- Conforme você pode ver, é possível se criar vários pools de conexão em um mesmo arquivo -ds.xml (vários local-tx-datasource, por exemplo). Não é errado, mas não é recomendável. Para se administrar melhor, mantenha um pool em cada arquivo específico.

3- Zele pela carga de seu sistema, controlando a quantidade de conexões abertas e o tempo de ociosidade delas. Se muito necessário, crie dois pools com perfis diferentes, de forma a flexibilizar seus ambientes.



Bom, este artigo detalhou bastante um processo que é mais do que comum em qualquer projeto web usando Java e JBoss, mas a que usualmente se precisa voltar e revisar, especialmente quando se é preciso criar o ambiente todo desde o início. Espero sinceramente ter ajudado. Não se esqueça de tecer seus comentários abaixo!!



domingo, 31 de julho de 2011

Amule: Resolvendo Problemas de LowID

  • O Que é LowID e Como Funciona a Conexão no Amule??

O Amule é um cliente das redes ED2K e KAD para Linux, muito semelhante ao E-Mule, que é direcionado ao público de outros sistemas operacionais.
Para o seu total funcionamento, o Amule (assim como o E-Mule) precisa atuar como servidor, abrindo uma porta em seu computador e permitindo o acesso externo a esta porta. A porta padrão do Amule é 4662 (TCP). Muitas vezes ainda é usada a porta 4672 (UDP). Se ao menos a porta TCP (4662) não estiver aberta, sua conexão será prejudicada e você receberá um LowID, que é um número de identificação baixo.
Receber um LowID significa que você tem dificuldades para ser acessado remotamente, e, por isso, não terá prioridade para download, o que implica em demora muito maior para receber dados.


  • Como Descobrir ou Configurar a Porta que o Amule Usa?

Abrir uma porta para acesso externo é complicado, pois pode favorecer a invasão a seu sistema, especialmente se você abrir a porta errada!! Felizmente, você pode verificar e trocar qual a porta que o Amule vai usar no próprio programa acessando (vide Figura 01):

Preferências - Conexão - Porta TCP do Cliente

Recomenda-se que você utilize uma porta fora do padrão, garantindo segurança um pouco maior no seu sistema.

Figura 01: Tela de configurações do Amule, mudando as portas.


  • Como Saber se a Porta Está Aberta??

Evidentemente, para usar o Amule você precisa verificar duas coisas:

1- Não existe mais nenhum programa usando a porta que você escolheu;
2- O Amule abre e a porta fica acessível;
3- O seu Firewall não bloqueia a porta do Amule.

Existem milhares de maneiras de se fazer isso. Uma forma fácil é usar o programa "nmap", um excelente sniffer de rede em modo texto. Em muitas distribuições ele não vem por padrão, então, para instalá-lo, digite, como root (em sistemas baseados no Debian):

apt-get install nmap

Para verificar as portas abertas em sua máquina, digite:

nmap localhost

Nmap scan report for localhost (127.0.0.1)
Host is up (0.00032s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 994 closed ports
PORT     STATE SERVICE
4662/tcp open  edonkey

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Se o relatório mostrou a sua porta (ex: 4662, que é a padrão)  com o estado "OPEN" (aberto), então localmente o problema está sanado, ou seja, não há nenhum firewall bloqueando a porta. Caso o estado apareça como "FILTRED", então a porta está sofrendo alguma intervenção e você deverá analisar a sua máquina em busca de algum Firewall (scripts do IPTables ou mesmo o Firestarter) e deverá reconfigurá-lo ou ao menos pará-lo momentaneamente, enquanto você usa o serviço.


  • Configurando um Modem ou Roteador

Mas nem tudo são flores: você pode estar debaixo de um roteador e pode estar em uma sub-rede criada pelo seu Modem/Roteador ou pela máquina que faz o Gateway para a Internet. Como saber isso com certeza?? Verifique seu IP, digitando:

ifconfig

Se seu IP começa com 192.168.xxx.yyy ou com 10.xxx.yyy.zzz, então você não está na Internet, mas sim numa sub-rede. E agora??
Calma, tudo tem solução. Se sua rede é doméstica, você provavelmente (ainda que não saiba) é o administrador do seu Gateway, que possivelmente é seu Modem ou Roteador. A maioria destes aparelhos possuem, atualmente, uma boa interface Web de configuração, que pode ser acessada de ser navegador, pelo endereço do IP (normalmente, o mesmo IP da sua máquina, mudando o último número para "1"). Exemplos:

http://192.168.0.1
http://10.0.0.1

Se ele pedir uma senha e você não souber, chute usuário=admin e senha=admin. Se der errado, verifique nos seus manuais e com a pessoa que fez a instalação da sua rede.

Na interface Web, procure uma seção com nome como "Virtual Hosts" ou "IP Forwarding" ou "NAT". Lá você poderá configurar sua máquina. Desta forma, basta preencher os seguintes dados:

Porta Interna: 4662 (ou a porta que você está usando no Amule).
Porta Externa: 4662 (a mesma de cima!!).
Private/Internal IP: (digite o IP de sua máquina, conforme vimos acima. NÃO DIGITE 0.0.0.0, pois criará problemas de redirecionamento no momento em que uma máquina remota tentar acessar seu Amule).
Protocolo: TCP.

Agora basta salvar tudo e, dependendo de seu Gateway, talvez seja preciso reiniciá-lo.


  • Teste Final

Abra o Amule e entre neste endereço, informando a sua porta e clicando em "Test":


É possível que tudo esteja funcionando. Se seu Amule não reclamou de receber um LowID e se o endereço acima não reportar erros, então está tudo certo!! Parabéns e boa sorte!!


  • Avisos

Este artigo ensina como configurar detalhadamente as portas do programa Amule, um programa gratuito e de código aberto. Não estamos incitando a pirataria nem a cópia ilegal de materiais proprietários e fechados. O Amule serve para compartilhamento de arquivos e pode ser uma grande solução para distribuição de programas gratuitos, assim como materiais artísticos criados e lançados por licenças abertas, como a Creative Commons.

sábado, 30 de julho de 2011

Trocando a Senha do Administrador do JBoss (JMX-Console Admin)

O JBoss é um servidor de aplicação dos mais utilizados mundialmente, extremamente robusto e seguro. Contudo, a sua configuração, refinamento, implementações de segurança e otimização nem sempre são muito fáceis. Este pretende ser o primeiro artigo de uma série sobre configuração e otimização do JBoss.
Como você já deve ter visto, o JBoss tem um administrador, que faz login via web no chamado JMX-Console, uma interface completa de administração do JBoss. Para fazer login, basta acessar o endereço (vide Figura 01):

http://localhost:8080/   ou
http://10.0.0.2:8080/
OBS: Troque o "10.0.0.2" pelo IP do seu servidor ou da sua máquina, e o "8080" pela porta que o JBoss está usando. O padrão é 8080.


Figura 01: Tela inicial de administração do JBoss.


Tente as duas opções acima. Dependendo da configuração, o JBoss responde a uma ou a ambas. Se você não sabe qual é a porta, então a porta deve ser 8080, que é a padrão.
Clique em "Administration Console". O usuário e senha padrões são "admin" e "admin" (Figura 02).



Figura 02: Tela de login do administrador do JMX-Console.


Para trocar a senha do administrador, vá ao arquivo:

[JBOSS_HOME]/server/default/conf/props/jmx-console-users.properties
onde JBOSS_HOME é o diretório de instalação do JBoss.

O arquivo tem o formato "user=password" e conterá os seguintes dados:

admin=admin

Agora troque o "admin" depois do sinal de "=" por uma senha segura e secreta (ex: "admin=ps9284nvlsfj!%%!Z"). Reinicie o JBoss e, pronto!! Seu usuário administrador já está protegido com uma senha novinha!!
Lembre-se de que o diretório onde este arquivo se encontra tem uma série de arquivos de configurações críticas do JBoss. Explore-os com cautela.
Bom, espero ter ajudado!! Boa sorte e bom trabalho!!

quinta-feira, 21 de julho de 2011

Instalando Impressoras Multifuncionais HP no Linux

Antigamente, realizar a tarefa proposta pelo título deste artigo era como reescrever o Kernel: todos diziam que era possível, mas ninguém conseguia fazer realmente. Hoje em dia, esta tarefa está muito mais fácil e, com as breves dicas deste artigo, você conseguirá fazer sua impressora HP funcionar corretamente no Linux, de maneira bem mais fácil, rápida e eficiente do que em outros sistemas operacionais para os quais a HP envia o CD de instalação...


  • Instalando o hplip

O projeto hplin (HP Linux Imaging and Printing) é um projeto de código livre que é uma verdadeira mão-na-roda: ele se propõe a prover, de maneira eficiente e sem muita frescura, drivers para tantas impressoras multifuncionais HP quanto possível. E, realmente, a lista é enorme (verifique todas as impressoras suportadas aqui)!! Os drivers em geral suportam tanto o scanner da impressora HP quanto a impressão em si.
Assim, seu primeiro passo é clicar no link mencionado e verificar se a sua impressora está presente na lista (ou seja, se ela é suportada), especialmente observando a partir de qual versão do driver ela aparece. O hplip está presente em muitas das distribuições Linux mais recentes, mas pode ser instalado em virtualmente qualquer distribuição, em geral através do seu gerenciador de pacotes. Em distros baseadas em Debian, basta digitar, como root:

apt-get install hplip

Se você não sabe se ele está ou não instalado, ou quer saber qual a versão que você tem, digite:

dpkg-query -l hplip

Em poucos instantes seu driver estará instalado. Não consome milhares de clicks nem fica nada piscando na sua tela. Não consome mais memória nem fica travando seu sistema. Fantástico!!
Se você quer dicas mais detalhadas sobre configurações específicas, incluindo suporte a FAX para o Ubuntu, consulte o tutorial oficial aqui.


  • Instalando o XSane

No Linux, existe uma ótima coisa: é preciso que se tenha apenas um programa para escanear, e ele não está preso ao driver ou ao CD da impressora. Este programa se chama "xsane", que é na verdade um frontend gráfico amigável para o Sane Project (Scanner Access Now Easy). Para instalá-lo, caso já não esteja instalado por padrão, digite (em distros Debian, Ubuntu ou baseadas no Debian), como root:

apt-get install xsane xsane-common

Isto instalará tudo o que você precisa. Agora, provavelmente aparecerá um novo programa no grupo Graphics do seu menu de programas. Caso nada apareça, basta digitar, no terminal: xsane.
Certifique-se de ligar a impressora e plugá-la antes de rodar o xsane, pois ele procura por dispositivos assim que se carrega.


  • Instalando e Configurando uma Impressora no Linux

Talvez, ao plugar sua impressora USB, o seu Linux já seja esperto o suficiente para encontrá-la e instalá-la automaticamente, de forma que nada mais seja preciso. Então esta seção pode ser pulada. Caso isto não aconteça, ou caso sua impressora não seja USB, vamos ao procedimento manual...
Para imprimir, é preciso instalar o CUPS (Common UNIX Print System), que possivelmente já estará instalado por padrão. Verifique com o comando:

dpkg-query -l cups

Caso não esteja instalado, instale-o com o comando:

apt-get install cups

Uma vez instalado, o CUPS vai rodar como um servidor (um deamon) em sua máquina. O interessante deste programa é que ele não provê uma interface gráfica, mas sim uma interface web de administração. É feito desta forma para que fique mais fácil a manutenção de impressoras em servidores de impressão de rede, que devem ser acessados remotamente.
Acesso o CUPS pelo seu navegador, com o endereço:

http://localhost:631/
OBS: troque o "localhost" pelo IP ou nome da máquina

A porta padrão do CUPS é 631, mas esta porta pode ser trocada, caso se deseje. Toda a manutenção de impressoras (configurar a impressora, adicionar ou remover impressoras, verificar a fila, etc, etc.) pode ser feita com as opções do menu CUPS for Administrators. A interface web é muito simples e bastante auto-explicativa. Boa sorte!!


Bom, pessoal, espero ter ajudado com este breve tutorial!! Boa sorte e, claro, como sempre: COMENTEM!!