Howto: Criando uma área de segurança para proteger aplicações no Tomcat

Olá pessoal, hoje uma dica bem simples.

Você já deve conhecer o esquema de proteção de diretórios que é utilizado no apache, onde é possível configurar uma lista de usuários que podem ter acesso a terminando conteúdo de um servidor web. Normalmente é solicitado um usuário e senha através de uma janela semelhante a esta:

Com Apache é muito fácil, tem muitos tutoriais por ai, iremos ver como podemos fazer o mesmo com uma aplicação rodando no Tomcat.

Howto:  Como proteger suas aplicações Java utilizando Realm
==================================================

Primeiramente convido você a conhecer o que é Realm do Tomcat.

1. Edite o arquivo: <tomcat_home>/conf/server.xml, e descomente a seguinte linha:

<Realm className=”org.apache.catalina.realm.MemoryRealm” />

Se você não encontrar esta linha, acrescente-a.

OBS:
“Tentei prosseguir sem fazer este passo, e funcionou também, apesar de ser recomendação  oficial”.

2. Vá ate o diretório de sua aplicação, e abra o arquivo web.xml, normalmente localizado em:

<tomcat_home>/webapps/suaAplicacao/WEB-INF/web.xml

Adicione as seguintes linhas entre as tags <web-app>…</web-app>:

<security-constraint>

<web-resource-collection>
<web-resource-name>OnJava Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>

<auth-constraint>
<role-name>onjavauser</role-name>
</auth-constraint>

</security-constraint>

Existem apenas dois sub-elementos que você precisa concentrar-se.

O primeiro é o <url-pattern>. Este sub-elemento define a URL da aplicação que será protegida. No exemplo acima protege a raíz da aplicação (/*), se fosse uma determinada pasta, é so definir ai, (/pasta)

O segundo sub-elemento, <role-name>, define o papel que o usuário pode acessar no diretório previamente definido em <url-pattern>.

Ou seja, significa que o acesso a raíz (/*) da aplicação (onjava) so poderá ser acessado pelos usuários do perfil definido em onjavauser.

3. Adicione no mesmo arquivo (web.xml) logo na seqüência após </security-constraint>, as seguintes linhas:

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>OnJava Application</realm-name>
</login-config>

4. Edite o arquivo <tomcat_root>/conf/tomcat-users.xml e adicione o seguinte sub-elemento:

<user name=”bob” password=”password” roles=”onjavauser” />

O sub-elemento <user> irá criar um novo usuário na base de dados do MemoryRealm do Tomcat,  que no exemplo dado com  com um nome de bob uma senha de password e um papel de onjavauser.

Você deve ter percebido que o valor do atributo roles  corresponde ao valor do sub-elemento <role-name> previamente definidos no web.xml em <security-contstraint>.

5.  Para concluir esta configuração, reinicie  o Tomcat.

Somente…

Fonte:

http://www.onjava.com/pub/a/onjava/2001/07/24/tomcat.html

Howto: alterando layout do teclado no Linux

Howto: Como alterar o layout de teclado no linux.
====================================

Situação: Você esta utilizando um teclado com padrão diferente do que foi instalado o seu servidor Linux, e este servidor não tem o X instalado, então é necessário alterar o padrão de layout do teclado diretamente via console.

Solução:

RedHat: # redhat-config-keyboard
Centos: # system-config-keyboard
Debian: # dpkg-reconfigure console-data
Ubuntu: # sudo dpkg-reconfigure console-setup
SuSe: # Yast2

Pode ser necessário alterar também o idioma padrão do seu servidor:

RedHat: # redhat-config-language
Centos: # system-config-language
Debian: # dpkg-reconfigure locales
Ubuntu: # sudo “set-language-env-E
SuSe: # Yast2

Como definir preço em trabalhos free-lance

Uma das primeiras dúvidas que surgem quando nos dedicamos a trabalhar como freelance é quanto cobrar por nossos serviços e como fazer para justificar o valor cobrado junto aos clientes.

Um excelente artigo do site Maestros del web, fala do assunto de maneira clara e direta, dando dicas sobre dinheiro, tempo e satisfação profissional de se trabalhar como freelance, confira.

Link: http://www.maestrosdelweb.com/

Manual para iniciantes em Joomla

Tem interesse em aprender Joomla 1.5? Não encontra uma boa documentação for dummies?

Pois bem, agora chegou a sua oportunidade, porque alguns amigos da  Comunidad Joomla! desenvolveu o Guia de inicio rápido para Joomla! 1.5.X, um simples manual que explica passo-a-passo a criação de um site fictício de uma empres de jardinagem, assim aprender a utilizar o CMS fica é bem mais lega…

Há, está em espanhol…..

Benchmark – Melhorando a Performance

The PHP Benchmark

Segundo a Wikipedia, Benchmarking é a busca das melhores práticas na indústria que conduzem ao desempenho superior. É visto como um processo positivo e pró-ativo por meio do qual se examina a realização de uma função específica a fim de melhorar como realizar a mesma ou uma função semelhante.

O processo de comparação do desempenho entre dois ou mais sistemas é chamado de benchmarking, e as cargas usadas são chamadas de benchmark.

Em desenvolvimento de sistemas sabe-se que existe diversas maneiras de resolver os problemas, porém o que pode mudar é as consequências que cada maneira pode trazer posteriomente ao sistema, principalmente em performance. E é neste quesito que o site PHP Bench atua, mostrado diversas formas para resolver o mesmo problema, e a carga que cada soluções pode trazer.

Confira: http://phpbench.com/

Não deixe também de  ler:  
Are you making these 10 PHP Mistakes?  (Os 10 erros mais comuns quando se programa em PHP).

Melhorando o tempo de carregamento de um site

A medida que estamos criando um site, é normal que incorporemos ao projeto alguns estilos, framework em javascript, plugins, enfim, cada recursos novo que adicionamos, leva junto seus próprios CSS´s e Javascript, e no final do projeto, você vê que no header de suas páginas é necessário:

  • inúmeras chamadas a estilos e javascript;
  • o tempo para carregar a página inteira fica comprometido.

Para  ajudar-lhe neste sentido, posso citar o  Minify,que é  un script PHP que realiza três trabalhos principaia

  • Nos  ajuda a reduzir o número de chamadas ao servidor, combinado vários arquivos CSS / JavaScript  em apenas um arquivo;
  • otimizar o código dos arquivos, eliminando espaços vazios, linhs duplas e comentários;
  • Realiza o cache no servidor dos arquivos otimizados.

Para utilizar é muito fácio, basta fazer o download do paote, colocar na raiz do seu site, c acessar o link (http://www.seusite.com.br/min/

Neste momento vamo criando a lista dos arquivos que queremos processar:

Uma vezz que terminamos de montar a lista, basta clicar em update, que teremos todos os arquivos otimizados. O Minify ainda gera um arquivo zipado com todos os arquivos que você indiquei no passo anterior, ai basta trocar no seu site.

Antes 
Após 

Otimizar o código e reduzir o número de requisições ao servidor, são dois pontos que devemos levar em conta no momento que otimizar um site. 

Para abordar mais o tema, não deixe de ler o excelente artigo do Yahoo! Developer Network com 34 regras para melhorar a velocidade de um site.

Link: Minify

Howto: Localizando e removendo registros duplicados – SQL

Howto:  Como apagar registros duplicados no MySQL.

Existem diversas técnicas para remover duplicidade em um Banco de Dados,  porém pra mim, a solução mais simples é usar UNIQUE INDEX. Veja como funciona…

ALTER IGNORE TABLE ‘tabela‘ ADD UNIQUE INDEX(campos_que_nao_vao_se_repetir);

Exemplo:

ALTER IGNORE TABLE ‘usuario‘ ADD UNIQUE INDEX(email);

Lembrando que após realizar este procedimento, o campo indicado será único, ou seja, não irá permitir mais duplicidade. Você pode até adicionar mais de um campo, simples assim.

Agora, se você quer apenas verificar se existe duplicidade, existe algumas querys simples para isso:

[sql]
SELECT
email,
count(*)
FROM pessoa
WHERE
email <> ”
GROUP BY email
HAVING COUNT(*) > 1
[/sql]
Neste exemplo, será exibido duas colunas, a primeira com os registros que existem duplicados e na segunda o número de registros com a mesma informação.

Outro exemplo:

[sql]
SELECT
email,
nome
FROM
pessoa tab1
WHERE (SELECT count(*) FROM pessoa tab2 WHERE tab2.email = tab1.email) > 1
[/sql]
Neste caso mostra além do registro duplicado outra coluna (nome) que julgar necessário. Ou assim também:

[sql]
SELECT
email,
equipe,
count(*) as total_duplicados
FROM pessoa
WHERE
email <> ” and equipe IN (10,11)
GROUP BY email, equipe
HAVING COUNT(*) > 1
[/sql]

Exibirá os registros duplicados da equipe 10 e 11, informando na última coluna quantas vezes o mesmo encontra-se duplicado.

Simples assim.

WordPress Dreamweaver extension

Navegando no site da Vikiworks, encontrei uma extensão para Dreamweaver que ajuda muito a todos que utilizam o WordPress como seu gestor de conteúdo.

A idéia da extensão é simplificar a o trabalho do desenvolvedor, pois permite com simples escolhas de opções no menu, inserir blocos de código diretamente no tema que esta sendo personalizado. Inclue os seguintes códigos:

  • The Loop
  • Include Header
  • Include Sidebar
  • Comments Template
  • Include Footer
  • Categories ASC & DESC
  • Lastest 10 Post
  • Dynamic Title Tag
  • Entry Content
  • Entry Excerpt
  • Navigation File
  • All in one Navigation
  • Montly Archives
  • Author Information

Download: http://www.vikiworks.com/download-manager.php?id=10

Site do Desenvolvedor: http://vikiworks.com/

Ferramentas para gerar dados de teste

Um dos grandes problemas que nós desenvolvedores enfrentamos quando estamos iniciando uma aplicação Web nova é com o rendimento em etapas iniciais do processo, problemas estes que vão se tornando mais visíveis a medida que temos uma quantidade de dados mais elevado e um número maior de usuários concorrentes.

Para resolver o problema com usuários concorrentes, é possível realizar teste de stress, porém quando se necessita ter um volume de dados elevado para poder provar se a aplicação esta se comportando como esperávamos, o que normalmente se faz é inserir manualmente essas informações, porém para este caso, temos ferramentas bastante úteis:

  • GenerateData: para mim um dos melhores.
  • DBMonster: para gerar dados aleatórios em uma base de dados. Muito completo, porém um pouco mais complexo.
  • CSV Data Generator: baseado em Ruby, gerar arquivos CSV.
  • Datagenerator: Este também gostei bastante por ser bem simples. Permite gerar dados para Mysql, Firebird, Interbase, MSSQL, Oracle, SQLite e PostgreSQL.

No post original, tem a sinopse de outros…
Test (Sample) Data Generators