Autenticação ADSL + suporte tecnico = R$6,90

publicidade

Ausência

Data April 13th, 2007 | Post by Jr. Hames

Tenho andado meio ausente do site, mas é que como estou de férias do trabalho, mal passo tempo na frente de um computador e acabo ficando bastante distante do blog também.

Mas, prometo que muito em breve voltarei com tudo, e prometo mudanças.

Abraços a todos

Jr. Hames


Cantos arredondados com Nifty

Data March 29th, 2007 | Post by Jr. Hames

Como nem todos conhecem, e muitos ainda me perguntam como fazer cantos arredondados com CSS (e todos sabem a resposta), vou falar um pouquinho sobre o Nifty.

O Nifty utiliza a mesma técnica que o Google utiliza no Gmail para arredondar os cantos dos botões ou frames, é bem leve, rápido e o site bem documentado. O único problema que eu notei foi o uso do window.onload que pode “atrasar” o efeito, porém, é somente na documentação.

No site do Nifty existem diversos exemplos de arredondamentos com div’s e ul’s criando os mais variados efeitos em boxes, colunas, botões e tabs incluindo transparência. Vale a pena dar uma olhada.

Nifty Corners Cube
Exemplo de uso do Nifty em tabs com efeito de transparência.


Regras para autores de bibliotecas JavaScript

Data March 27th, 2007 | Post by Jr. Hames

Dean Edwards escreveu as regras para autores de bibliotecas JavaScript. São regras que segundo ele, foram criadas para uso próprio, mas imagino que sirva para todos nós.

Entre elas estão:

  • Seja não-obstrusivo;
  • Object.prototype não deve ser utilizado;
  • Siga os padrões;
  • Ou, siga o lider (mozilla);
  • Seja flexível;
  • Gerencie a memória;
  • O Menor é melhor.

Cinco dias sem SPAMs

Data March 20th, 2007 | Post by Jr. Hames

Update #1

Adicionei hoje um contador de SPAMs bloqueados pelo sistema de CAPTCHA inverso logo acima do formulário de comentários, só para dar uma idéia do funcionamento do sistema aqui no blog.

Post Original

Hoje estou comemorando 120(cento e vinte) horas sem SPAMs aqui no World Wide Standards. Como havia falado no post sobre a Classe PHP para CAPTCHA inverso e mail-makeup, comecei a utilizar o sistema quinta-feira(15/03/07) e desde então não tive mais problemas com os malditos SPAMs sobre viagra, cialis, ou seja lá qual maldito medicamento.

O Lucas Castro, do about:blank, comentou sobre criar um plugin para o WordPress que fosse só ativar e pronto. Andei lendo sobre o assunto, mas a maneira mais simples que encontrei de fazê-lo, ainda depende que o usuário faça uma alteração no layout dos comentários.

Se alguém conhecer alguma outra maneira que dispense a alteração manual do layout, a comunidade web agradece :D


Colírio #3

Data March 19th, 2007 | Post by Jr. Hames

Colírios #3:


Classe PHP para CAPTCHA inverso e mail-makeup

Data March 16th, 2007 | Post by Jr. Hames

Update #1

No código que vai no script que interpreta os dados do formulário, existe um erro na linha #4. O correto é:

$AntiSpam = AntiSpam::singleton($_SESSION['secretPhrase']); //cria uma nova instância da classe AntiSpam

Post original

Li no about:blank, por Lucas Castro, um post sobre CAPTCHA inverso que me inspirou a programar um pouco e escrever também.

A idéia

Utilizando-se de hashes e um honeypot, testar os bots ao invés dos humanos.

Vantagem

  • O processo torna-se transparente para o usuário, ou seja, não é necessário ficar digitando letrinhas, completando frases ou ordenando imagens. O sistema testa os robôs e não você.

Desvantagens

  • Sempre existe a possibilidade de os bots tornarem-se mais “espertinhos”, mas devido ao sistema, os mesmos teriam que ser acrescidos de um interpretador de CSS, Javascript e controle de sessão.
  • Caso o usuário utilize um browser de texto que não interprete CSS, o sistema fica parcialmente descoberto.

A Classe

Desenvolvi uma classe em PHP de fácil implementação que permite criar ou modificar um formulário rapidamente para utilizar o sistema de CAPTCHA inverso, bem como para tratar os resultados depois.

Já estou utilizando o sistema em fase de testes no formulário de comentários do blog desde ontem a noite, e até agora nenhum spam, comparando com antes em que recebia pelo menos um a cada hora.

A classe chamada AntiSpam possui 5 (cinco) métodos usáveis. São eles:

  • String makeSpinerKey(void): Usado para criar o formulário, gera um código html para ser inserido logo após a tag form;
  • String getSecretKey(String fieldName): Usado para criar o formulário, recebe o nome do campo do formulário como parâmetro, e retorna uma chave única para ele;
  • String makeHoneyPot(void): Usado para criar o formulário, gera o código do HoneyPot para ser inserido logo após a tag form;
  • MixedArray checkForm(Array postVars, Array fieldNames): Utilizado para checar os dados do formulário, recebe a varivável $_POST com os dados inseridos no formulário, e um array com o nome real dos campos, os mesmos utilizados com o método getSecretKey. Ele retorna false caso o formulário tenha sido violado, ou se tudo estiver ok, retorna um Array no padrão param => value;
  • String mailSpider(String mail, boolean link, boolean inline): Esta função foi um bônus adicionado a classe que serve para escrever e-mail em páginas e evitar que spiders insiram esse e-mail em maillists. A função recebe o e-mail, link(se true: retorna um link; se false: retorna texto puro) e inline(true ou false: altera a maneira como escreve o código).

Como utilizar

Primeiramente, efetue o download da classe e envie-a para o servidor onde se encontra o seu formulário.

No arquivo PHP que gera seu formulário, é necessário inserir alguns códigos no começo do arquivo:

<?
session_start(); //se você já declara, não há necessidade.
require_once('AntiSpam.php'); //inclui o arquivo AntiSpam.php no código
$AntiSpam = AntiSpam::singleton(""); //cria uma nova instância da classe AntiSpam
?>

O formulário também precisa de alguns códigos adicionais. Abaixo um código exemplo de como ficaria:

<form name="formulario" action="processaform.php" method="post">
<?=$AntiSpam->makeSpinerKey();?>
<label for="<?=$AntiSpam->getSecretKey('nome');?>">Nome:</label> <input type="text" name="<?=$AntiSpam->getSecretKey('nome');?>" /><br />
<label for="<?=$AntiSpam->getSecretKey('email');?>">Email:</label> <input type="text" name="<?=$AntiSpam->getSecretKey('email');?>" />
<?=$AntiSpam->makeHoneyPot();?>
<input type="submit" name="<?=$AntiSpam->getSecretKey('enviar');?>" value="Enviar" />
</form>

Com isso, temos um formulário com dois campos de texto chamados nome e email. Agora, vamos ao script que faz o tratamento dos dados capturados:[ ver update #1 ]

<?
session_start(); //se você já declara, não há necessidade.
require_once('AntiSpam.php'); //inclui o arquivo AntiSpam.php no código
$AntiSpam = AntiSpam::singleton(""); //cria uma nova instância da classe AntiSpam
if(false != ($form = $AntiSpam->checkForm($_POST, array("nome","email")))) print_r($form); //testa se o formulario foi enviado da forma que se espera e retorna um array no formato parametro => valor
else print "Sem bots por aqui!";
?>

Como vocês podem notar, o uso da classe é extremamente simples. O retorno é um array que é utilizado da mesma maneira que se faria com o $_POST.

Eu citei acima uma função bônus que chamei de mailSpider, que nada mais é do que uma função que previne que um e-mail no site seja capturado por spiders. Abaixo um exemplo de seu uso:

<?=$AntiSpam->mailSpider("usuario@provedor.com",true,false);?>

Bem simples também. Testem para ver o resultado, e qualquer dúvida é só perguntar.

Download

Clique aqui para efetuar o download da classe.

Saiba mais


Gerenciamento de riscos em projetos de TI

Data March 13th, 2007 | Post by Leonardo Ramos

Primeiro assunto, falando logo de assunto pesado, né??
Triste, porém necessário.
Não há nenhum registro de sucesso em projetos sem uma boa análise e um bom gerenciamento de riscos.

Gerenciar riscos nada mais é do que priorizar a alocação de recursos de forma que a falta deles não comprometa a conclusão de um projeto. Mas e quando falamos de TI? Ora, em projetos desse tipo, temos normalmente dois tipos de recursos, excetuando-se o financeiro, condição inerente a praticamente qualquer projeto:

  1. Humanos, na área de planejamento, execução e controle;
  2. Infra-estrutura.

Como podemos gerenciar riscos de algo tão imprevisível quanto as atitudes humanas? Como prever problemas com infra-estrutura de TI? Por vezes, caímos no erro de investir excessivamente em infra-estrutura, visando apenas o gerenciamento de riscos, e acabamos prejudicando financeiramente o projeto. O que fazer, então?

O PMBOK reúne melhores práticas para gerência de projetos, e com gerenciamento de riscos não é diferente. Não queira aplicar tudo ao mesmo tempo, seria uma catástrofe. Procure avaliar alguns pontos:

  • Os riscos comprometem o projeto em que nível? Se os riscos são inerentes à execução ou controle, lembre-se: sem gerenciá-los, você não terá a gerência do projeto, e sim a gerência do caos.
  • O escopo do projeto pode ser alterado no decorrer da execução? Se a resposta é não - o que é bem comum em TI - é bem possível que os riscos avaliados não sejam do projeto, e sim do produto final do projeto. Isso exige medidas mais drásticas: entre em contato com o responsável pelo projeto e avalie de imediato a construção de um plano de continuidade de negócios. Ele pode ser a sua salvação ainda no decorrer do projeto.
  • Lembre-se do triângulo da qualidade: se você alterar orçamento, tempo de execução ou escopo, fatalmente a qualidade será atingida. Se vai melhorar ou piorar, depende de você, gerente do projeto, que controla as atividades e a alocação de recursos.

Aí em cima toquei num assunto interessante: Plano de Continuidade de Negócios.
Fala-se muito em BCP, Business Continuity Planning, e pouco se explica.

No próximo artigo vamos mostrar como utilizá-lo como ferramenta no gerenciamento e controle de riscos de projetos.

Abraços!


Novo colunista no WWS

Data March 8th, 2007 | Post by Jr. Hames

A partir de hoje, 8 de março de 2007, contamos com um novo colunista que escreverá artigos voltados a Administração direcionada a nossa área como Gestão de informações e projetos, TI, ITIL, PMI, CRM entre outros.

Dêem as boas vindas a Leonardo Ramos.

Não falarei muito, deixarei que ele mesmo se apresente a vocês com seus posts e informações. Espero que gostem.


Apache mod_rewrite como ferramenta de SEO

Data March 7th, 2007 | Post by Jr. Hames

A algumas semanas recebi uma tarefa importante, de aumentar a visibilidade de um site perante os mecanismos de busca existentes, em especial é claro, o Google.
Com uma ajudinha do módulo mod_rewrite do servidor Apache, obtive resultados muito bons. Obviamente não foi exclusivamente por isso. Utilizei várias outras técnicas de SEO, mas resolvi comentar por hora sobre essa.

Um fator que ajuda muito na indexação das páginas pelo Google é que a URL, o título, a descrição do site, e o conteúdo contenham palavras-chaves em comum. Quando se trata do título, a descrição e o conteúdo é fácil de resolver, mas e com a URL?

Modificar todo o sistema de um site já pronto e que muitas vezes utilize URLs dinâmicas é extremamente trabalhoso e muitas vezes complicado. O mod_rewrite nos dá uma mãozinha nesta tarefa.
Com ele podemos transformar URLs do tipo: www.seusite.com.br/loja.php?categoria=automoveis&produtos=pneus&marca=pirelli em algo do tipo: www.seusite.com.br/automoveis/pneus/pirelli tornando-a assim mais legível, mais simples e mais fácil de ser indexada.

Observação: Para utilizar este recurso, o servidor Apache precisa ter o módulo mod_rewrite instalado e configurado para permitir o uso do mesmo através de arquivos .htaccess utilizando a diretiva: AllowOverride All na configuração do diretório de seu site.

No exemplo que eu apresentei, para redirecionar de forma dinâmica e automática a URL www.seusite.com.br/automoveis/pneus/pirelli para www.seusite.com.br/loja.php?categoria=automoveis&produtos=pneus&marca=pirelli, criamos o arquivo .htaccess contendo o seguinte conteúdo:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /loja.php?categoria=$1&produtos=$2&marca=$3 [L]
</IfModule>

Explicando as linhas:

  • Linha 1: Testa se o módulo mod_rewrite está ativo no apache. Caso verdadeiro, prossegue com o bloco;
  • Linha 2: Habilita a Rewrite Engine para o diretório em que se encontra o .htaccess;
  • Linha 3: Define o diretório base para o redirecionamento;
  • Linha 4: Testa se a URL informada é um arquivo válido;
  • Linha 5: Testa se a URL informada é um diretório válido;
  • Linha 6: Caso as condições impostas(URL diferente de arquivo ou diretório) sejam verdadeiras, efetua redirecionamento conforme a expressão regular utilizada.

Achou difícil criar a expressão regular? Este site pode ajudar você: MOD_REWRITE WIZARD

Está pronto! Suas URLs já estão mais legíveis e mais fáceis de serem indexadas.


Meebo-me!

Data March 2nd, 2007 | Post by Jr. Hames

Instalei um widget do MeeboMe! no blog que permite vocês conversem comigo através de uma interface amigável e simples de usar.

O IM está disponível em http://wws.x4u.com.br/contato

Se tiver alguma dúvida, quiser conversar, estou a disposição!

Já aviso aos navegantes que não faço cook-books! Ensino a pescar, não dou o peixe.

Abraços