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