Archive for August, 2009

Removendo espaços em branco com o Vim

August 21st, 2009

Muitos editores e IDEs tem a opção de remover os espaços em branco no fim de cada linha ao salvar o arquivo. Com o Vim não é diferente: basta um comando.

:%s/\s\+$//g

Nessa expressão regular estamos dizendo para substituir (s/) todos os espaços e tabulações (\s\+) por vazio (//), aplicando em todo o buffer (g). Como não é muito prático ficar digitando isso toda hora, vamos mapear para o comando “Trim”:

:command Trim %s/\s\+$//g

Para facilitar ainda mais, podemos mandar o Vim executar esse comando sempre antes de salvar o buffer (evento BufWriteCmd):

:autocmd BufWriteCmd * Trim

O ‘*’ diz a quais arquivos essa regra deve ser aplicada. Para aplicar somente a arquivos PHP, basta escrever:

:autocmd BufWriteCmd *.php Trim

Coloque esses comandos no arquivo ~/.vimrc (retirnado o ‘:’ no início da linha) e pronto. Simples, não?

Post to Twitter Post to Facebook

Configurando mod_rewrite no VirtualHost do Apache

August 16th, 2009

Os frameworks MVC e diversos sistemas (como o próprio WordPress) utilizam URLs amigáveis – algo como http://example.org/configurando-sites.html ao invés de http://example.org/post.php?id=99. Isso requer que o servidor web seja configurado corretamente. No Apache isso pode ser conseguido com o auxílio do mod_rewrite, que permite mapear URLs utilizando expressões regulares para diferentes arquivos. A maioria provê o seguinte exemplo (ou uma variação dele):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php [QSA,L]

Esse código especifica que se o arquivo requisitado (%{REQUEST_FILENAME}) não for um diretório (!-d) e não for um arquivo (!-f), a regra seguinte deve ser aplicada (que no caso diz para passar a execução para o script index.php).

Podemos colocar esse código .htaccess, o que traz uma desvantagem: é preciso que o apache seja configurado para procurar arquivos .htaccess em cada diretório da aplicação, o que reduz o desempenho. O ideal seria colocá-lo diretamente na definição do VirtualHost. Para isso, precisamos fazer um pequeno ajuste. Onde está:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Substitua por:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f

Isso é necessário porque o apache – por algum motivo que desconheço – não mapeia a caminho completo para a variável REQUEST_FILENAME (embora a documentação informe o contrário). Colocando o %{DOCUMENT_ROOT} antes, a condição se torna válida.

Post to Twitter Post to Facebook

~rcmachado is Digg proof thanks to caching by WP Super Cache