Apagar todos arquivos de um tipo nas pastas e subpastas no linux

Usando o linux (Ubuntu, no meu caso), sempre tenho que gerar pacotes de arquivos com atualizações das mais diversas, para enviar a clientes. Como usamos o SVN para gerenciamento de versões, repositórios e afins, sempre gerava os pacotes (zip ou rar) com um monte de arquivos do cliente SVN usados internamente por ele para gerenciar as versões dos arquivos. Com isso, o .zip sempre ficava bem maior do que eu queria.

Então, pesquisei e vi que, para apagar arquivos com uma determinada extensão de uma pasta e sub-pastas, é só ir no console e digitar:

find sua_pasta -iname ".extensao" -exec rm -fr {} ;

Por exemplo:

find /home/user/dev/cliente1 -iname ".svn" -exec rm -fr {} ;

Veja mais sobre como apagar pastas no Linux.

Setando o encoding no envio de e-mail por PHP

Quando se usa a função mail() do PHP, erros nos caracteres especiais – por exemplo, caracteres acentuados – podem aparecer no cliente – ou o webmail ou o software – que visualiza a mensagem.

A maneira mais simples de não passar por esse problema é usando o charset UTF-8. Esse charset é um dos que abrange a maioria dos caracteres usados.

A aplicação é simples: devse setar o charset UTF-8 no quarto parâmetro da função, que são os headers enviados para ela.

 <?php
    $recipient = "[email protected]"; //recipient
    $html = "<html><body>Teste</body></html>";

    $subject = "assunto";
    $header = "Content-type: text/html; charset=UTF-8 ";
    mail($recipient, $subject, $html, $header) or die("<p>Erro ao enviar a sua mensagem. Tente novamente, por favor.</p>"); //mail command 🙂
    echo("<p>Sua mensagem foi enviada com sucesso.</p>");
?>

Ferramentas para gerenciamento de projetos em Scrum

Há algum tempo deixei de passar 100% do meu dia programando para ter que me preocupar com assuntos mais gerenciais. E vejo muita desorganização por aí, muita falta de respeito com isso, ausência de cultura nesse sentido.

Isso gerou muitas conversas, trocas de idéias e links com o @gserrano, e até um post sobre gerenciamento de projetos na web.

Sem sombras de dúvidas, Scrum é a metolodia mais aplicável a web: simples, sem regras complexas, adaptável e mutável, que define entregas (sprints) com prazos curtos e independente de outras entregas. Nada de toda a sobriedade do RUP ou afins.

Aqui na empresa, estamos pensando em como implementar Scrum nos projetos, de uma forma organizada e viável. Conversando com alguns amigos, vi que a maioria das empresas usa o quadro branco para fazer todas as anotações necessárias. Acho totalmente viável isso, mas na ausência de um quadro branco – okey, não é esse o motivo, mas sim o medo do quadro ficar pequeno vendo o tamanho dos projetos – fui procurar ferramentas para ajudar no gerenciamento do Scrum.

Ouvi falar bem do VersionOne, que é lider no mercado, do Jira que é usado por exemplo pela agência Click, e o ScrumWorks que tem uma versão free para Windows/Linux/MacOS que pareceu ser bem estável.

Veja um gráfico fornecido aqui após uma pesquisa feita com empresas da área de web sobre o uso de tal tipo de ferramente:

E vocês, usam alguma ferramenta para esse controle? Ou é tudo na mão ainda?

Usando a Prototype – passo 6 – tratando Strings

A biblioteca prototype tem uma classe para manipulação de String (veriricar se está em branco, transformar para caixa alta/baixa, checar se começa com um texto específico, se termina, etc…)

Essa classe é instanciada com o nome String e você pode usar com a seguinte sintaxe:

seu_texto.metodo([parâmetros])

Por exemplo, se você quiser verificar se uma variável está em branco:

var texto = "";
texto.blank(); //retorna true
texto = "a";
texto.blank(); //retorna true

Retirar os espaços em branco antes e depois:

var texto = "    olá mundo!      ";
texto.strip(); //retorna "olá mundo!"

Transformar HTML entities em texto normal:

var texto = "x &gt; 10";
texto.unescapeHTML(); //retorna x > 10

Veja a documentação completa da classe String para ter uma idéia do poder dela. Inclusive, quem está acostumado a programar em Java vai notar muitas semelhanças nesses métodos com os da classe String nativa do Java, o que facilita muito na hora de desevolver.

Validação de formulários com prototype

Um dos grandes pontos positivos que eu vejo na jQuery é a quantidade absurda de plugin desenvolvidos em cima dele: menus, efeitos, requisições ajax, validações…
Sou há tempos um tipo de fanboy adepto da Prototype, mesmo sabendo que devo ser minoria. Então, fui procurar algumas coisas na web a esse respeito. Achei para validação de formulários uma biblioteca bem bacana e simples.

http://tetlaw.id.au/view/javascript/really-easy-field-validation

Para utilizar, você precisa:

incluir as bibliotecas (prototype e a de validação):
<script src="prototype.js" type="text/javascript"></script>
<script src="validation.js" type="text/javascript"></script>

escrever elementos dessa forma (required indica que é um campo a ser validado e validate-number que deve ser validado como um número)
<input class="required validate-number" id="field1" name="field1" />

ativar a validação passando o id do form
<script type="text/javascript">
     new Validation(´form-id´);
</script>

Os campos podem ser validados de diversas formas (apenas letras, apenas dígitos, como uma url, formato de endereço de e-mail, data, etc…)

Existem diversas outras opções, como usar o atributo title do input para setar a mensagem a ser exibida caso a validação do campo retorna false, dizer para a rotina parar a validação no primeiro erro ou validar todos os campos, etc…

Aqui tem um exemplo completo do autor 🙂